STL-->vector

verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素。此外,当被插入的内存空间不够时,需要重新申请一块足够大的内存并进行内存拷贝。值得注意的是,vector每次扩容为原来的两倍,对小对象来说执行效率高,但如果遇到大对象,执行效率就低了。


  1. 构造器
  vector();
  vector( size_type num, const TYPE &val );
  vector( const vector &from );
  vector( input_iterator start, input_iterator end );
无参数 - 构造一个空的vector,             
数量(num)和值(val) - 构造一个初始放入num个值为val的元Vector 
vector(from) - 构造一个与vector from 相同的vector 
迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间    元素的Vector(注:半开区间). 

例子

#include<vector>

using namespace std;

void print(vector<int> v)
{
    vector<int>::iterator it;
    for( it = v.begin(); it != v.end(); it++ )
    {
        cout << *it << ends;    
    }
    cout << endl;
}
int main()
{
    vector<int> v1(5,2);//2 2 2 2 2
    vector<int> v2(v1)//2 2 2 2 2
    vector<int> v3(v1.begin()+0,v1.begin()+4);// 2 2 2 2
    print(v1);
    print(v2);
    print(v3);
    return 0;
}
  1. 函数 assign
 void assign( input_iterator start, input_iterator end );
 void assign( size_type num, const TYPE &val );

assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.

v1.assign(10,1);//10个1
print(v1);

at

at() 函数 返回当前Vector指定位置loc的元素的引用. at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到Vector内越界的元素. 例如, 考虑下面的代码:
for( int i = 0; i < 11; i++ ) {
  cout << "Element " << i << " is " << v1.at(i) << endl;
}
充分保证不会越界了

back back() 函数返回当前vector最末一个元素的引用

v1.back()//返回 2

begin begin()函数返回一个指向当前vector起始元素的迭代器.例如,下面这段使用了一个迭代器来显示出vector中的所有元素:

vector<int> v1( 5, 789 );
vector<int>::iterator it;
for( it = v1.begin(); it != v1.end(); it++ )
  cout << *it << endl;

clear clear()函数删除当前vector中的所有元素.

v1.clear();//v1中一个元素度没有了

empty 如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false.

end end() 函数返回一个指向当前vector末尾元素的下一位置的迭代器.注意,如果你要访问末尾元素,需要先将此迭代器自减1.

erase

iterator erase( iterator loc );
  iterator erase( iterator start, iterator end );

erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器

front front()函数返回当前vector起始元素的引用

insert

iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start,input_iterator end );

在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 在指定位置loc前插入num个值为val的元素 在指定位置loc前插入区间[start, end)的所有元素 .

vector<char> alphaVector;
for( int i=0; i < 10; i++ )
  alphaVector.push_back( i + 65 );

//插入四个C到vector中
vector<char>::iterator theIterator = alphaVector.begin();
alphaVector.insert( theIterator, 4, 'C' );

//显示vector的内容
for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )
  cout << *theIterator;

这段代码将显示: 

CCCCABCDEFGHIJ

pop_back ` pop_back()函数删除当前vector最末的一个元素

push_back push_back()添加值为val的元素到当前vector末尾

swap swap()函数交换当前vector与vector from的元素

size size() 函数返回当前vector所容纳元素的数目

resize resize() 函数改变当前vector的大小为size,且对新创建的元素赋值val

v1.resize(7,1);//2 2 2 2 2 1 1

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券