C++ vector容器的使用
Posted 晚风Sensei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ vector容器的使用相关的知识,希望对你有一定的参考价值。
写此文以便需要时查阅
头文件
#include<vector>
初始化
申请一个有length个长度的vector容器(尽量在初始化时指定长度)
vector<type> vec1(int length)
也可以从数组中获得初值
int b[7]=1,2,3,4,5,6,7;
vector<int> vec2(b,b+7);
常用内置函数
vector.assign(iterator1, iterator2)
将两个迭代器范围内的元素赋值给vector,左闭右开
vector<int> vec1, vec2;
//将vec2 0~3的元素赋值给vec1
vec1.assign(vec2.begin(), vec2.begin()+4);
vector.size()
返回vector元素的个数
vector.capacity()
返回vector容量,而非元素个数
vector.reserve(int length)
将vector的容量扩充至length
vector.back()
返回vector最后一个元素
vector.front()
返回vector第一个元素
vector.clear()
清空vector中的元素
vector.empty()
判断vector是否为空。空则返回true,非空返回false
插入操作
vector.push_back(element)
在vector末尾插入一个元素
vector.insert(iterator, element)
在vector迭代器位置插入元素element
vector.insert(iterator, int len, element)
在vector迭代器位置插入len个element元素
vector.insert(iterator, array+a, array+b)
在vector迭代器位置插入数组array从位置a到位置b-1范围的元素(左闭右开)
int b[10] = 0,1,2,3,4,5,6,7,8,9
vec1.insert(vec1.begin()+1,b+3,b+6);
删除操作
vector.pop_back()
删除vector最后一个元素
vector.erase(iterator1, iterator2)
删除vector迭代器范围的元素,左闭右开
几种常用的算法
需要算法头文件
#include<algorithm>
排序
sort(iterator1, iterator2)
将迭代器范围的元素从小到大排序
int a[4] = 3, 2, 5, 1
vector<int> vec(a, a+4);
sort(vec.begin(), vec.end());
reverse(iterator1, iterator2)
将迭代器范围的元素倒置,sort排序完后再调用reverse可实现从大到小排序
reverse(vec.begin(), vec.end());
find(iterator1, iterator2, element)
查找迭代器范围内的element元素,若存在返回指向该元素的迭代器指针,不存在则返回一个迭代器指针(该指针比vector.end()大1)
int a[4] = 3, 2, 5, 1;
vector<int> vec(a, a+4);
//元素存在
vector<int>::iterator index1 = find(vec.begin(), vec.end(), 1);
cout << index1-vec.begin() << endl; //3
//元素不存在
vector<int>::iterator index2 = find(vec.begin(), vec.end(), 10);
cout << index2-vec.begin() << endl;
以上是关于C++ vector容器的使用的主要内容,如果未能解决你的问题,请参考以下文章