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容器的使用的主要内容,如果未能解决你的问题,请参考以下文章

vector使用大全, 资料!!!c++

C++实现vector容器

C++中STL学习笔记——容器之vector

C++中STL学习笔记——容器之vector

C++ vector容器用法

C++——容器之分类与各种测试