标签:bsp 数据 内部使用 不同的 内存 示例 结构 logs sizeof
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的常见构造方法:
下面为具体代码示例:
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;
标签:bsp 数据 内部使用 不同的 内存 示例 结构 logs sizeof
原文地址:http://www.cnblogs.com/docliff/p/6493173.html