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;

所有博文均为原著,如若转载,请注明出处!
原文地址:https://www.cnblogs.com/zpcoding/p/10324990.html