C++中vector是顺序容器的一种,可以说是可变长的动态数组。要使用vector时,需要包含头文件vector。
对于vector容器的操作大部分可分为增删改查。vector有很多成员函数。
常用成员函数如下:
vector() | 无参构造函数,将容器初始化为空 |
vector(int n) | 将容器初始化为有 n 个元素 |
void clear() | 删除所有元素 |
bool empty() | 判断容器是否为空 |
void pop_back() | 删除容器末尾的元素 |
void push_back( const T & val) | 将val添加到容器的末尾 |
int size() | 返回容器元素个数 |
iterator insert(iterator i, const T & val) | 将val插入迭代器i指向的位置,并返回i |
iterator insert( iterator i, iterator first, iterator last) | 将其他容器上的区间 [first, last) 中的元素插入迭代器 i 指向的位置 |
iterator erase(iterator i) | 删除迭代器 i 指向的元素,返回值是被删元素后面的元素的迭代器 |
iterator erase(iterator first, iterator last) | 删除容器中的区间 [first, last) |
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> vec;
vector<int> ::iterator it;
for (int i = 0; i < 5; i++)
{
vec.push_back(i); //将i添加到容器的末尾
}
for (int i = 0; i < 5; i++)
{
cout << vec[i] << endl; //使用直接访问容器
}
vec.pop_back(); //删除末尾元素
vec.push_back(10); //添加元素到末尾
cout << "分隔符**********************************************************" << endl;
for (int i = 0; i < vec.size(); i++)
{
cout<<"下标遍历打印:" << vec[i] << endl; //再次输出容器里的元素
}
cout << "分隔符**********************************************************" << endl;
vec.insert(vec.begin() + 1, 100); //将100插入容器的第二个
vec.erase(vec.begin() + 2); //将容器中第三个元素删除
for (it = vec.begin(); it != vec.end(); ++it) //用迭代器输出打印容器里的元素
{
cout<<"迭代器打印(增删之后):" << *it << endl; //再次打印容器里的元素
}
}
控制台输出结果:
0
1
2
3
4
分隔符**********************************************************
下标遍历打印:0
下标遍历打印:1
下标遍历打印:2
下标遍历打印:3
下标遍历打印:10
分隔符**********************************************************
迭代器打印(增删之后):0
迭代器打印(增删之后):100
迭代器打印(增删之后):2
迭代器打印(增删之后):3
迭代器打印(增删之后):10
其中迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。
通过迭代器可以读取它指向的元素,*迭代器名
就表示迭代器指向的元素。通过非常量迭代器还能修改其指向的元素。代码中it就是正向迭代器定义方法如下:
容器类名::iterator 迭代器名