C++ vector
vector是一个容器,类似于数组,使用的顺序存储结构,可以看做是可以动态拓展的数组,使用vector的优点是其以常数时间进行索引,缺点是在中间进行插入和删除操作代价比较高,但是如果插入和删除发生在尾端速度仍然较快。
使用时需要包含头文件#include<vector>
初始化方式:
vector<int>v1;
当然int可以换成其它的类型。
其它初始化方式:https://lovedm.club/?id=87
常用操作:
v1.push_back() //在数组的最后添加一个数据 v1.pop_back() //去掉数组的最后一个数据 v1.front() //返回第一个元素(栈顶元素) v1.begin() //得到数组头的指针,用迭代器接受 v1.end() //得到数组的最后一个单元+1的指针,用迭代器接受 v1.clear() // 移除容器中所有数据 v1.empty() //判断容器是否为空 v1.erase(pos) //删除pos位置的数据 v1.erase(beg,end)// 删除[beg,end)区间的数据 v1.size() //回容器中实际数据的个数 v1.insert(pos,data) //在pos处插入数据
如下的例子:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//创建一个int型的向量存储容器
vector<int> v;
v = {0, 3, 5, 6, 8, 9, 7, 4, 5, 3};
cout << "The origin vector:" << endl;
for (int i = 0; i < 10; i++)
{
cout << v[i] << " ";
}
cout << endl
<< endl;
//push_back()在数组最后添加数据
int a;
cout << "Please enter the element you want to add:" << endl;
cin >> a;
v.push_back(a);
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl
<< endl;
//pop_back()去掉数组最后一个数据
cout << "The last 3 elements will be romoved: " << endl;
for (int i = 0; i < 3; i++)
{
v.pop_back();
}
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl
<< endl;
//front()返回第一个元素,back()返回最后一个元素
cout << "The first element:" << v.front() << endl
<< "The last element:" << v.back() << endl
<< endl;
//在指定位置插入数据,第一个参数是用迭代器表示的位置,第二个参数是要插入的数据
cout << "Insert an element:" << endl;
v.insert(v.begin() + 2, 4);
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl
<< endl;
//empty()判断是否为空,返回布尔值
bool isEmpty = v.empty();
cout << isEmpty << endl
<< endl;
//size()容器中实际数据个数
cout << "Now v has " << v.size() << " elements." << endl;
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl
<< endl;
//clear()清除所有元素
cout << "Clear all elements." << endl;
v.clear();
cout << "Now v has " << v.size() << " elements." << endl;
cout << endl;
//重新赋值
cout << "Reassignment." << endl;
int b[10] = {2, 3, 6, 9, 4, 1, 3, 5, 7, 0};
for (int i = 0; i < 10; i++)
{
v.push_back(b[i]);
}
//vector是支持迭代器的,可使用algorithm头文件下的sort()进行排序
cout << "before order:" << endl;
for (int i = 0; i < 10; i++)
{
cout << v[i] << " ";
}
cout << endl;
sort(v.begin(), v.end());
cout << "after order:" << endl;
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl
<< endl;
//可使用algorithm头文件下的reverse()进行翻转序列
cout << "reverse vector:" << endl;
reverse(v.begin(), v.end());
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl
<< endl;
//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
cout << "Use iterator to traverse all elements:" << endl;
vector<int>::iterator it;
for (it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
cout << endl
<< endl;
cout << v.size() << endl;
cout << *(v.begin()) << endl;
cout << *(v.end() - 1);
system("pause");
return 0;
}

鲁公网安备 37148202000241号