这里记录一下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的表格。这个在交互题里比较常见。
相关文章
- 11-23vector autosar someip与vsomeip对接经验总结
- 11-23leetcode 15. 3Sum 二维vector
- 11-23解决方案-vector初始化后存放Mat,出现Mat矩阵数据同变问题
- 11-233.1 One-dim Vector Initialtization
- 11-23C++ vector 排序
- 11-23c++ vector详解
- 11-23QVector和vector的隐式共享
- 11-23STL string,vector,complex,limits类的使用
- 11-23HashMap、HashTable、ArrayList、LinkedList、Vector区别
- 11-23vector::clear()