vector初始化
来源:互联网 发布:ibatis源码分析 编辑:程序博客网 时间:2024/06/11 16:33
简介:
vector可用于替代C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该优先选择vector,因为它的效率更高,而且具备很好的异常安全性。
而且vector是STL推荐使用的默认容器,除非有特殊需要,如需要容器在head和tail高效的插入和删除,或者在任何位置高效的插入和删除,那么此时使用vector不能满足需求,可能使用deque或者list更加合适。
内存申请:
vector是连续内存容器,也就是说,标准要求所有标准库实现的时候,vector中的元素的内存必须是连续的。所以,对于插入和删除的时间复杂度是很高的,因为插入或删除的时候需要元素的移动,即元素复制拷贝。
vector的初始化:
1. 基本初始化
//Format 1: vector<T> v(n,i) //v包含n个值为i的元素vector<int> ivec(10, 2);//Format 2: vector<T> v(v1) //v1是v的一个副本vector<int> ivec1(ivec);//Format 3: vector<T> v(n) //v包含n个值初始化的元素vector<int> ivec2(10); //10个元素,每个都初始化为0vector<string> svec(10); //10个元素,每个都初始化为空string//Format 4: 用back_inserter函数vector<int> ivec4; //空对象fill_n(back_inserter(ivec4), 10, 3); //10个3,填充ivec4
2. 填充vector
vector的赋值并不可以像数组一样方便的用花括号方便的完成赋值, 這里借用了数组来初始化这个vector,用原始数组的内容填充vector。
例如我们有数组
int v1[10] = {0,1,0,0,3,0,0,4,4,4};
初始化方式1(这种方式最为习惯):
//Format : vector<T> intvec(begin, end);vector<int> ivector(v1, v1+10);
初始化方式2:
vector<int> v2(10);//初始化size为10可以避免数组动态增长的时候不断分配内存//v2.reserve(10); //同上,只要使用其中一个就可以了for (int i=0; i<10; i++){ v2.push_back(v1[i]);//增加一个元素}
初始化方式3:
vector<int> v3(&v1[0], &v1[9]);//原始数组的元素指针可以作为迭代器来使用
初始化方式4:
vector<int> v4;v4.reserve(10);v4.insert(v4.begin(), &v1[0], &v1[9]);
初始化方式5:
vector<int> v5(10);copy(v5.begin(), &v1[0], &v1[9]);
Note:
原始数组的元素指针可以作为迭代器来使用。
原则:尽量使用reserve来减少不必要的内存分配次数。
原则:尽量使用empty而不是size()==0来判断容器是否为空。
reference :
1. http://www.cnblogs.com/freeopen/p/5482962.html
2. https://www.cplusplus.me/1112.html
0 0
- vector初始化
- vector 初始化
- 初始化vector
- vector初始化
- vector<vector<int> >初始化
- 用数组初始化vector
- vector 初始化 分享
- vector顺序容器初始化
- c++ vector 初始化
- 使用数组初始化vector
- vector 二维数组 初始化
- 二维vector初始化
- vector 初始化 与遍历
- 多维vector的初始化
- vector的初始化
- vector遍历和初始化
- vector的初始化问题
- 二维vector初始化
- POJ2195 Going Home (最小费最大流)
- https的工作原理
- 欢迎使用CSDN-markdown编辑器
- Java中static变量作用和用法详解
- 文章标题
- vector初始化
- 《无所不能的JavaScript编程系列:arguments 参数对象》
- 我为什么读博以及我为什么不读博(转)
- 派生类的构造函数(层次结构)
- 构造函数中base()的用法
- 421. Maximum XOR of Two Numbers in an Array
- shutdown定时关机和定时重启命令
- 在层次结构中添加带参数的构造函数
- C#中常用关键字的用法