顺序容器

来源:互联网 发布:桌面主题软件哪个好 编辑:程序博客网 时间:2024/06/08 06:52

顺序容器

vertor, deque, list, forward_list; 的插入, 删除, 拷贝, 读取, 迭代器

#include <iostream>#include <cstdlib>#include <list>#include <vector>#include <string>#include <array>#include <deque>#include <forward_list>int main(){    //vector;     //不支持push_front 和 emplace_back;    //不支持pop_front删除;    //resize扩展大小; 实质不改变容量中元素的数量, 它仅影响预先分配的内存大小;    std::vector<int> a;    a.push_back(10);    a.push_back(1);    a.push_back(20);    /*    for (auto &i : a)        std::cin >> i;    */    a.insert(a.begin(), 213);                       //vertor不支持 push_front 但是可以用insert将元素插入头位置, 只是很耗时;并且insert返回值是插入元素的位置    /*    int i;    std::cin >> i;    a.push_back(i);    */    auto c = a.begin();    auto c1 = *c;    auto c2 = a.front();                            //a中首元素的引用    auto b = a.end();                               //迭代end指向最后一位元素后不存在的元素位置    auto b1 = *(--b);    auto &b2 = a.back();    b2 = 10000;             //a中尾元素的引用    auto d = a.cbegin();    auto e = a.crbegin();    std::vector<int >::iterator m = a.end();    std::vector<int >::const_iterator q = a.begin();    std::vector<int >::iterator w = a.begin();    a.pop_back();                                   //删除首元素    a.erase(a.begin() + 1, a.end() - 1);            //删除范围元素    a.resize(10);                                   //扩展大小到10;    a.resize(5, 1);                                 //将大小扩展到5, 全部为1, 其他多余的元素删除;    std::cout << "vector : \n";    for (auto i : a)        std::cout << i << " ";    std::cout << '\n' << a.size() << '\n';    for (int i = 0; i < a.size(); i++)        std::cout << a[i] << " ";    a.clear();    //deque;     //与vector相比, 可以将元素插入头位置, push_front;    std::deque<int > a1 = { 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, 9, 10 };    a1.push_back(11);    a1.push_front(12324);    //list;    std::list<std::string > str = { "123", "234", "345" };    std::list<std::string > stri = { "243235", "asd" };    std::list<std::string > str1;    str1.push_front("2423");    str.assign(10, "1");                            //用assign初始化10 个 "1";    /*    for (auto &st : str)        std::cin >> st;    */    str.push_back("12222");    str.push_front("122222");                       //list, forward_list, deque还支持 push_front 将元素插入头位置;    std::cout << "\n\n list : \n";    for (auto i : str)        std::cout << i << " ";    //array;    //不支持pop的删除操作    //不支持resize;    std::array<int, 10> ar = { 1, 2, 3, 4, 5 };    std::array<int, 10 > ar0 = { 2, 4, 6, 8, 10, 111 };    std::array <std::string, 10 > ar1;    std::cout << "\n\n array : \n";    for (auto i : ar)        std::cout << i << " ";    //forward_list;     //不支持push_back和emplace_back;     //有专有的insert 和 emplace;     //而forward_list不能递减 即, --;    //不支持pop_back的删除, 有特殊版本的eraser    std::forward_list<std::string > str0 = { "1", "2", "3" };    std::forward_list<std::string > str2(str0);    std::cout << "\n\n forward_list : \n";    for (auto i : str0)        std::cout << i << " ";    //拷贝;    str0.assign(str.begin(), str.end());            //array不能用assign拷贝;    std::array<int, 10 > cpyar = ar;    //交换;    ar.swap(ar0);                                   //array类型数组大小要一样, 将ar与ar0交换;    swap(ar, ar0);    str.swap(stri);    system("pause");    return 0;}
原创粉丝点击