STL的vector初始化
vector是连续内存容器,所以对于插入与删除的时间复杂度是很高的,因为删除或者插入的时候,需要元素的移动,即元素复制拷贝。
使用原则:
- 尽量使用vector代替C风格的数组或者CArray;
- 尽量使用算法代替手工写的循环;
- 尽量使用vector本身的函数代替其它泛型算法;
初始化vector
填充vector,如果我们想使用原始数组的内容填充vector,例如我们有数组int v[10] = {0,1,1,10,0,0,0,0,3,5}
初始化方式1:
1234vector<int> v2(10); // 初始化size为10可以避免数组动态增长的时候不断的分配内存for(int i = 0; i<10; i++) {v2.push_back(v2[i]); // 增加一个元素}初始化方式2:
1vector<int> v3(&v[0], &v[9]); // 原始数组的元素指针可以作为迭代器来使用初始化方式3
123vector<int> v4;v4.resize(10);v4.insert(v4.begin(), &v[0], &v[9]);初始化方式4
12vector<int> v5(10);copy(&v[0], &v[9], v5.begin());
原始数组的元素指针可以作为迭代器来使用,
- 原则:尽量使用resize来减少不必要的内存分配次数。
- 原则:尽量使用empty而不是size()==0来判断容器是否为空
|
|