STL--vector、deque、list、set、map、stack

vector(向量容器)

#include
#include
#include
using namespace std;
bool cmp(int &x,int &y) {
    return x>y;
}

int main() {
    int a[10]={2,4,1,6,8,12,67,45,89,456};
    vector  vec(a,a+10);//用a的10个元素初始化vec
    printf("size:%d\n",vec.size());
    printf("正向输出vec:");
    vector::iterator it,it1;
    for(it=vec.begin();it!=vec.end();it++) {
        printf("%d\t",*it);
    }
    printf("\n");
    int x=6;
    it1 = find(vec.begin(),vec.end(),x);
    if(it1!=vec.end()) {
        printf("find it = %d\n",*it1);
    }else {
        printf("Not find it.\n");
    }
    printf("递减排序vec:\n");
    sort(vec.begin(),vec.end(),cmp);
    vector::reverse_iterator rit;
    printf("反向输出vec:");
    for(rit = vec.rbegin();rit!=vec.rend();++rit) {
        printf("%d\t",*rit);
    }
    printf("\n");
    return 0;
}
STL--vector、deque、list、set、map、stack_第1张图片
程序运行结果

deque(双端队列容器)

#include
using namespace std;
void Display(deque &dq) {
    deque::iterator iter;
    for(iter=dq.begin();iter!=dq.end();iter++) {
        printf("%d\t",*iter);
    }
    printf("\n");
}
int main() {
    deque dq; //建立双端队列
    dq.push_front(1); //队头插入
    dq.push_back(2);//队尾插入
    dq.push_front(3);//队头插入
    dq.push_back(4);//队尾插入
    Display(dq);

    dq.pop_front();//删除队头元素
    dq.pop_back();//删除队尾元素
    Display(dq);
    return 0;
}
程序运行结果

list(链表容器)

#include
#include
using namespace std;
void Display(list &myList) {
    list::iterator it;
    for(it=myList.begin();it!=myList.end();it++) {
        cout<<*it<<" ";
    }
    cout< myList(a,a+n);
    myList.remove(6);//删除链表中所有指定值的元素
    cout<<"remove:";
    Display(myList);
    myList.reverse();//链表反转
    cout<<"reverse:";
    Display(myList);
    myList.unique();//删除链表中所有重复的元素
    cout<<"unique:";
    Display(myList);
    myList.sort();//递增排序
    cout<<"sort:";
    Display(myList);
    myList.sort(greater());//递减排序
    cout<<"sort(greater()):";
    Display(myList);
    return 0;
}
STL--vector、deque、list、set、map、stack_第2张图片
程序运行结果

set(集合容器)

#include
#include
#include
using namespace std;
void Display(set &myset) {
    set::iterator it;
    for(it = myset.begin();it!=myset.end();it++) {
        printf("%d ",*it);
    }
    printf("\n");
}
int main() {
    set set1,set2,set3;
    int a[]={2,1,5,6,9};
    int n = sizeof(a)/sizeof(a[0]);
    set1.insert(a,a+n);//插入
    int b[]={4,7,9,3,1};
    int m = sizeof(b)/sizeof(b[0]);
    set2.insert(b,b+m);//插入
    set::iterator it3;
    printf("set1:");
    Display(set1);
    printf("set2:");
    Display(set2);
    insert_iterator< set > insert_it(set3,set3.begin());//定义插入迭代器insert_it
    set_union(set1.begin(),set1.end(),set2.begin(),set2.end(),insert_it);//并集
    printf("union:");
    Display(set3);
    set3.clear();
    set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),insert_it);//交集
    printf("intersection:");
    Display(set3);
    set3.clear();
    set_difference(set1.begin(),set1.end(),set2.begin(),set2.end(),insert_it);//差集
    printf("different:");
    Display(set3);
    return 0;
}
STL--vector、deque、list、set、map、stack_第3张图片
程序运行结果

map(映射容器)

#include
#include
#include
#pragma warning(disable:C4786)
using namespace std;
void Display(map &mymap){
    map::iterator it;
    for(it = mymap.begin();it!=mymap.end();it++) {
        printf("[%c,%d] ",it->first,it->second);
    }
    printf("\n");
}
int main() {
    map mymap;
    mymap.insert(pair('a',1));//插入方式1
    mymap.insert(map::value_type('b',2));//插入方式2
    mymap['c']=3;//插入方式3
    printf("map:");
    Display(mymap);
    return 0;
}
程序运行结果

你可能感兴趣的:(STL--vector、deque、list、set、map、stack)