vector

这里记录一下vector支持的操作,最近看到了好多花里胡哨的。


1.v.push_back(x):在末尾添加一个元素x.


2.v.size():以无符号形式返回vector的大小


3.v.clear():清空vector.


4.v.pop_back():删除最后一个元素。


5.v.emplace_back(x):这个就比较奇特了,主要用于卡常数。当你往vector里面放一个构造类型的变量时,如果用push_back()的话,在声明的时候会调用一次构造函数,放进vector的时再调用一次拷贝构造函数。而emplace_back()只调用一次构造函数,省去了大概一半的常数时间。
需要注意的是,需要c++11支持。


6.初始化:vector的初始化方法有好多种。
(1)vector<int> v:默认初始化,大小为空。
(2)vector<int> v = v2:v2和v必须为同类型的vector,用v2对v进行初始化。这里也可以看出vector支持整体的赋值。也可以写成vector<int> v(v2)
(3)vector<int> v = {1, 2, 3}:将v的前三个元素分别对应赋值。若类型不一样,会自动进行类型转换(开了-Wall时会有Warning)。
(4)vector<int> v(n):将v的初始大小设置为n,默认是0.
(5)vector<int> v(n, m):将v的初始大小设置为n,每一个元素的值是m。
所以如果有一个vector<vector<int> > v,即一个二维vector,那么可以这样初始化:vector<vector<int> > v(n, vector<int>(m, a)):表示将v初始化为一个n行m列,初值为a的表格。这个在交互题里比较常见。

原文地址:https://www.cnblogs.com/mrclr/p/14099934.html