zoukankan      html  css  js  c++  java
  • STL::vector

    1,vector 是一个可以动态增长的容器,其访问方式和 array 一样可以进行随机访问,不同的是 vector 在分配存储空间时不是一次一个空间的分配,而是会分配多余的空间,这样在新插入数据时,可以避免 再次分配存储空间的操作造成的性能损失,从而达到一个性能和内存的平衡。

    Iterator有下面的几种:

    begin:

    end:

    rbegin:

    rend:

    cbegin:

    cend:

    crbegin:

    crend:

    Capacity

    size:  Returns the number of elements in the vector,返回 vector 中元素的个数,不一定和 capacity 相同

    max_size:

    resize: 重新设置 vector 的 容量(size 变化),并不改变当前容器的 capacity(capacity 不变)。如若比当前容量小,则把后面的数据销毁,如若比当前容量大,若没有指定确切的值,则填充值为初始化值,否则填充为指定的确切值。两种语法:resize(size_type n);   resize(size_type n,const value_type& val);

    capacity:  Return size of allocated storage capacity,返回当前已经分配的容量大小,单位为当前可容纳该类型的元素个数。测试为:1,2,4,8,16

    empty:

    reserve:翻译为:保留,预留。解释: 更改第一次分配的容量大小,如若 myvector.reverse(100),则此时容量为100,跳过了从 1,2,4,8,16 增长的过程。reverse(size_type n),如果 n 比当前容量大,则动态分配容量到 n; 如果 n 比当前容量小,则不改变当前容量,也不改变当前容器内的内容。

    shrink_to_fit:  Requests the container to reduce its capacity to fit its size,这也许会导致内存重分配情况的发生,但是不会改变容器的 size 和 容器内的元素。

    Element access:

    operator[ ]:

    at:

    front:

    back:

    data: 用法同 array 中的 data;

    Modefiers

    assign: 为 vector 分配新的内容以代替它原来的内容,其 size 也跟着变化。三种使用方式:assign(InputIterator first,InputIterator last),用一个起始迭代器,一个终止迭代器进行新内容的填充,这两个迭代器可以来自另一个 vector 。assign(size_type n,value_type& val): fill 方式;assign(initializer_list<value_type> li): 用别的序列进行填充,例如数组。

    1   int myints[] = {1776,7,4};
    2   third.assign (myints,myints+3);   // assigning from array.

    push_back:

    pop_back:

    insert: single element; fill; range; move; initializer list; 5种填充方式;note:iterator  的有效性;(任何改变vector长度的操作都会使已存在的迭代器失效,就不能再信赖迭代器指向的值了)返回值为:新插入的第一个元素的迭代器; https://wenku.baidu.com/view/1b325dc7aa00b52acfc7cafb.html

    erase:返回删除元素的下一个元素的迭代器,如果删除的是最后一个元素,则指向该容器的末尾(myvector.end()); 范围删除: [first,end)

    swap:  用法:swap (vector& x); 交换两个 vector 的内容;两个vector 可能 size 并不相同。但迭代器仍然保持有效,原来指向的元素不发生变化。

    clear:  清空 vector 的元素,但 capacity 可能仍不发生变化,如若要重新分配空间,用:vector<T>().swap(x);// clear x reallocating

    emplace(c++11):功能类似于 insert ,不同之处参见:https://blog.csdn.net/penghuicheng/article/details/51505625

    emplace_back(c++11): 功能类似于 push_back,不同之处同上。

    Construct vector: default; fill; range; copy; move; initializer list;

    所有博文均为原著,如若转载,请注明出处!
  • 相关阅读:
    PHP WAMP关闭notice等提示
    PowerDesigner 逆向工程 从SQL文件转换成PDM 从PDM转成CDM
    Servlet 各种path路径比较
    数据库一对一的两种关联 主键关联和外键关联
    Java Timer定时器
    VS2010彻底卸载
    VS2010每次编译都重新编译整个工程的解决方案
    DbgPrint/KdPrint输出格式控制
    error TRK0002: Microsoft Visual Studio 10.0VCinlink.exe Access is denied.
    WinDbg F9时“code not found breakpoint not set”
  • 原文地址:https://www.cnblogs.com/zpcoding/p/10324990.html
Copyright © 2011-2022 走看看