欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

STL vector

程序员文章站 2024-01-09 20:03:40
vertor : 可变大小的数组 可随机访问,尾部插入快,其它位置慢(涉及到拷贝和复制) Myfirst Mylast Myend 大小: size = Mylast - Myfirst 已有元素个数 容量: capacity = Myend - Myfirst 最多可存元素个数 capacity ......

vertor : 可变大小的数组   可随机访问,尾部插入快,其它位置慢(涉及到拷贝和复制)

     

 

Myfirst                                                                                   Mylast                                                   Myend

大小: size = Mylast - Myfirst                    已有元素个数

容量: capacity = Myend - Myfirst            最多可存元素个数

capacity >= size

resize() 设置大小(size 小->大 ok  大->小 没用) , reserve 设置容量(capacity)

resize()的作用是改变vector中元素的数目。

resize() 和reserve()都不会使capacity变小,单都有可能使capacity变大,具体怎么变大,reserve()和resize()是不一样的。

reserve()能准确的控制capacity,而resize()不能,vc里每次增大一半当前的capacity。

注意:改变capacity、插入、删除都会引起迭代器的失效。

vector 的成员函数

vec.push_back(elem) 向尾部添加一个elem数据

vec.pop_back()     删除末尾的数据

 vec.begin()    返回指向第一个数据的迭代器。

vec.end()    返回指向最后一个数据之后的迭代器(尾后)。

vec.rbegin()    返回逆向队列的第一个数据,即vec容器的最后一个数据。

vec.rend()    返回逆向队列的最后一个数据的下一个位置,即vec容器的第一个数据再往前的一个位置。

vec.assign(begin, end) 将一个左闭右开的区间的数据赋值给vec

vector<int> v1,v2;
v1.push_back(10);
v1.push_back(20);
v2.push_back(30);
v2.assign(v1.begin(),v1.end());

vec.assign(n, elem) 赋n个值为elem的元素到vector容器中,这个容器会清除掉vector容器中以前的内容。

vector<int> v;
v.assign(5,10);//往v里放5个10

vec.at(int index)传回索引为index的数据,如果index越界,抛出out_of_range异常。

vecto<int> v;
cout << v.at(2) << endl;//打印vector中下标是2的数据

vec.clear() 移除容器中所以的数据

vec.erase(pos)删除pos位置的数据,传回下一数据的位置

vec.erase(begin, end)删除[beign, end)之间的数据,传回下一个数据的位置

vec.insert(pos,elem) 在pos位置插入一个elem的拷贝,返回插入的值的迭代器。

vec.insert(pos,n,elem)在pos位置插入n个elem的数据,无返回值。

vec.insert(pos,beg,end)在pos位置插入在[beg,end)区间的数据,无返回值。

c1.swap(c2)将c1和c2交换。

swap(c1,c2)同上。

vector<int> v1,v2,v3;
v1.push_back(10);
v2.swap(v1);
swap(v3,v1);

vec.front()返回第一个数据。

vec.back()传回最后一个数据,不检查这个数据是否存在。