Standard Template Library, STL
vector的定义
vector<typename> name
vector 容器内元素的访问
(1)通过下标访问
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=0;i<5;i++)
vi.push_back(i);
for(int i=0;i<5;i++)
printf("%d ",vi[i]);
return 0;
}
//输出0 1 2 3 4
(2)通过迭代器访问
迭代器(iterator)可以理解为一种类似指针的东西,其定义是
vector<typename>::iterator it; //it 是一个vector<typename>::iterator 型的变量,其中typename 就是定义vector时填写的类型
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=0;i<5;i++)
vi.push_back(i);
vector<int>::iterator it;
for(it=vi.begin();it!=vi.end();it++)//vi.begin()取vi的首元素地址,vi.end()取vi尾元素的下一个地址
printf("%d ",*it);
return 0;
}
vector 常用函数
push_back(x) //在vector后面添加一个元素x
pop_back() //删除vector的尾元素
size() //返回vector中元素的个数
clear() //清空vector中的所有元素
insert(it,x) //向vector中的任意迭代器it处插入一个元素x
erase(it) //删除迭代器为it处的元素
erase(first,last) //删除[first,last)内的所有元素
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=0;i<5;i++)
vi.push_back(i);
vi.insert(vi.begin()+2,-1); //将-1 插入vi[2]位置
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
return 0;
}
//输出0 1 -1 2 3 4
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=0;i<5;i++)
vi.push_back(i);
vi.erase(vi.begin()+2); //删除vi[2]位置元素
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
return 0;
}
//输出0 1 3 4
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=0;i<5;i++)
vi.push_back(i);
vi.erase(vi.begin()+1,vi.begin()+3); //删除vi[1],vi[2]元素
for(int i=0;i<vi.size();i++)
printf("%d ",vi[i]);
return 0;
}
//输出0 3 4