vector基本概念
功能:
vector和普通数组区别:
(1)构造函数
1 vector<T>();//默认构造函数 2 3 vector<T>(v.begin(),v.end());//将v[begin(),end()]中的元素拷贝给自身 4 5 vector<T>(n,elem);//构造函数将n个元素elem拷贝给自身 6 7 vector<T>(v);//拷贝构造
(2)赋值操作
利用=或assign函数进行赋值
1 vector<int> v; 2 for (int i = 0; i < 10; i++) { 3 v.push_back(i);//尾插插入元素 4 } 5 vector<int> v1 = v;//利用=赋值 6 vector<int> v2; 7 v2.assign(v1.begin(),v1.end());//利用assign函数赋值,传入一个区间 8 vector<int> v3; 9 v3.assign(5, 100);//利用assign函数赋值,传入n个elem,assign(n,elem);
(3)容量与大小
1 vector<int> v; 2 v.empty();//判空函数,返回一个布尔值 3 v.capacity();//容量函数,返回vector容器中现有开辟空间 4 v.size();//大小函数,返回vector容器中元素的个数 5 v.reserve(20000);//直接指定vector容器的容量,可以减少vector动态分配内存的次数,从而提高效率 6 v.resize(3);//重新指定容器的元素个数,若容器变长则以默认值0填充,若变短,超出元素则被删除 7 v.resize(10,100);//重新指定容器的元素个数,若容器变长则以默认值100填充,若变短,超出元素则被删除
(4)插入与删除
1 vector<int> v; 2 v.assign(3, 100);//赋值10个元素 3 //100 100 100 4 5 v.push_back(10);//尾插法插入元素 6 //100 100 100 10 7 8 v.pop_back();//删除最后一个元素 9 //100 100 100 10 11 v.insert(v.begin() + 1, 5);//在迭代器指向位置插入元素 12 //100 5 100 100 13 14 v.insert(v.begin() + 1, 3,6);//在迭代器指向位置插入n个elem 15 //100 6 6 6 5 100 100 16 17 v.erase(v.begin());//删除迭代器指向位置的元素 18 v.erase(v.begin() + 1, v.end());//删除迭代器区间内的元素,区间左闭右开 19 v.clear();//清空
(5)数据存取
利用at()函数或[]下标的形式来访问数据。其中front()函数和back()函数分别返回容器的第一个元素和最后一个元素
deque容器
功能:
deque和vector的区别:
deque内部工作原理:
从deque内部有个中控器,维护每段缓冲区中的内存,缓冲区中存放真实数据。中控器维护的时每个缓冲区的地址,使得使用时像一片连续的空间。原理个人认为像计算机组成原理中的分页。内部结构简图如下:
deque操作:
基本和vector一致,此处就不再叙述。
原文:https://www.cnblogs.com/jhwlxx/p/13190004.html