首页 > 代码库 > C++标准模板库之vector(Boolan)
C++标准模板库之vector(Boolan)
vector是C++标准模板库中一种常见的容器,像数组类似,vector使用连续的存储空间用来保存元素,使用指针偏移可以快速的访问元素(通常认为是O1复杂度),与数组不同的是它的大小是可变的,在vector内部使用动态分配的内存保存元素,这意味着vector增长时需要重新分配内存,并将原来的原来的数据复制到该内存单元,需要很大的开销,因此vector并不会在每次新增元素时候都重新分配内存空间。vector实际容量(capacity)通常比实际大小(size)大得多。参考数据结构(C++语言版),我们可以看到capacity的增长都是成倍增长的:
template <typename T> void vector<T>::expand() { if (_size < _capacity) return; T *oldElem = _elem; _elem = new T[_capacity <<= 1]; for (int i = 0; i < _size; i++) _elem[i] = oldElem[i]; delete [] oldElem; }
vector的常见构造方法:
- 默认构造,构造一个空容器,没有元素。
- 构造n个元素,每个元素为m
- 区间构造,可以是迭代器,也可以数组区间
- 复制构造
下面为具体代码示例:
std::vector<int> first; std::vector<int> second (5,100); std::vector<int> third (second.begin(),second.end()); std::vector<int> fourth (third); // 复制构造 int ary[] = {6,12,17,2}; std::vector<int> fifth (ary, ary + sizeof(ary) / sizeof(int) ); for (auto it = fifth.begin(); it != fifth.end(); ++it) std::cout << ‘ ‘ << *it; std::cout << std::endl;
C++标准模板库之vector(Boolan)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。