码迷,mamicode.com
首页 > 编程语言 > 详细

C++标准模板库之vector(Boolan)

时间:2017-03-03 01:29:25      阅读:166      评论:0      收藏:0      [点我收藏+]

标签: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的常见构造方法:

  1. 默认构造,构造一个空容器,没有元素。
  2. 构造n个元素,每个元素为m
  3. 区间构造,可以是迭代器,也可以数组区间
  4. 复制构造

下面为具体代码示例:

    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)

标签:bsp   数据   内部使用   不同的   内存   示例   结构   logs   sizeof   

原文地址:http://www.cnblogs.com/docliff/p/6493173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!