C++中vector的使用

来源:互联网 发布:mac查看文件属性 编辑:程序博客网 时间:2024/06/03 15:10

1、push_back函数

push_back将一个元素追加到一个vector的尾部。

伪代码如下:

vector<int> arr;for (int i=0;i<100;i++){arr.push_back(i);cout<<arr[i]<<endl;}

2、insert函数

insert允许在容器的任何位置插入0个或多个元素。

每个insert函数接受一个迭代器作为其第一个参数,指出在容器的什么位置放置新元素。

insert函数将元素插入到迭代器所指定的位置之前。

c.insert(iter,”Hello!”);   //将”Hello!”插入到迭代器所指位置之前

3、pop_back、erase、clear函数

c.pop_back()// 删除c中的尾元素。若c为空,则函数行为未定义。函数返回voidc.erase(p)// 删除迭代器p所指定的元素,返回一个被删除元素之后元素的迭代器,若p指向尾元素,则返回尾后迭代器。若p是尾后迭代器,则函数行为未定义。c.erase(b,e)//删除迭代器b和e范围内的元素,返回一个指向最后一个被删除元素之后元素的迭代器,若e本身就是尾后迭代器,则函数也返回尾后迭代器。c.clear()// 删除c中的所有元素

4、size函数

使用vector的成员函数size

伪代码如下:

vector<int> arr;for (int i=0;i<100;i++)arr.push_back(i);int num = arr.size();cout<<num<<endl;

5、数组初始化vector对象

C++11新标准引入了两个名为begin和end的函数。

begin函数返回指向数组首元素的指针,end函数返回指向数组元素下一位置的指针,这两个函数在iterator头文件中。

伪代码如下:

int arr[] = {11, 32, 41, 25, 67, 100, 88, 233};   // 指出拷贝区域范围 vector<int> iv(begin(arr), end(arr));也可以是数组的一部分,区间前闭后开//vector<int> iv(arr+2,arr+6);  //基于范围的for循环,输出for (auto c : iv)  cout << c << endl; 

6、resize函数

用resize来增大或缩小容器,如果当前大小大于所要求的大小,容器后部的元素会被删除;如果当前大小小于所要求的大小,会将新元素添加到容器后部。

c.resize(n)// 调整c的大小为n个元素。若n<c.size(),则多出的元素会被丢弃。若必须添加新元素,对新元素进行值初始化。c.resize(n,t)// 调整c的大小为n个元素。任何新添加的元素都初始化为t。

7、capacity、 reserve函数

c.capacity()// 不重新分配内存的话,c可以保存多少元素    容器容量c.reserve(n)// 分配至少能容纳n个元素的内存空间  内存预分配,提高效率

8、swap 函数

void swap( vector &from );

swap()函数交换当前vector与vector from的元素,类型需要相同,但是元素个数可以不同。

元素本身并未交换,只是交换了两个容器的内部数据结构,所以操作会很快。

9.assign函数

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赋值以前的内容.

10.back、 front、 at和[ ]函数

c.back()//返回c中尾元素的引用。若c为空,函数行为未定义c.front()//返回c中首元素的引用。若c为空,函数行为未定义c[n]//返回c中下标为n的元素的引用,n是一个无符号整数。若n>=c.size(),则函数行为未定义c.at(n)//返回下标为n的元素的引用。如果下标越界,则会抛出out_of_range异常


原创粉丝点击