容器的共通操作
初始化
·以某个数组元素为初值,完成初始化
int src[] = {1,2,3,4,5,6,7};
vector<int> c(src,sizeof(src)/sizeof(src[0]));
·以另一个容器的元素为初值,完成初始化
vector<char> a_vector;
//...
vector<char> b(a_vector);
·以标准输入装置完成初始化
vector<int> a((std::istream_iterator<int>(std::cin)),
(std::istream_iterator<int>()));
与大小相关的操作函数
- size() 返回当前容器的元素数量。
- empty() 这是size()==0 表达的快捷形式,效率更高。
- max_size() 返回容器最大容纳元素数量。一般返回索引型别的最大值。
vector
笔记:
vector<Elem> c(n); //利用元素的初始化函数生成一个大小为n的容器
vector<Elem> c(n,elem); //利用elem的值初始化
vector<Elem> c(beg,end);//利用 [beg,end) 区间初始化
c.capacity(); //返回重新分配空间之前最大容量
c.assign(n,elem); //复制n个elem,赋值给c
c.assign(beg,end); //复制[beg,end) 区间赋值给c
c.swap(b); //交换c,b
swap(c,b); //同上
元素的存取:
c.at(idx); //返回索引为idx的元素。检查越界。
//若越界,抛出out_of_range
c[idx]; //不检查越界
c.front(); //返回第一个元素,不检查。
c.back(); //返回最后一个元素,不检查。
安插、移除元素:
c.insert(pos,elem); //pos位置插入elem副本。返回新元素位置。
c.insert(pos,n,elem); //pos位置插入n个elem副本。无返回值。
c.insert(pos,beg,end); //pos位置插入[beg,end)区间副本。无返回值。
c.push_back(elem); //尾部添加一个elem副本。无返回值。
c.pop_back; //删除最后一个元素。无返回值。
c.erase(pos); //移除pos位置上的元素。(标准中不返回值)
c.erase(beg,end); //移除区间[beg,end)中的元素,返回下一元素位置
c.resize(num); //将元素数量改为num,新元素以初始值补充
c.resize(num,elem); //新元素以elem补充。
c.clear(); //移除所有元素,清空容器。