1.vector:
变长数组
头文件:#include<vector>
using namespace std;
1.1定义:
vector<typename> name;
vector<int> name;
vector<double> name;
vector<node> name;//node是结构体类型
//如果typename也是一个STL容器,定义的时候>>符号之间要加上空格 即: vector<vector<int> > name;
vector<vector<int> > name;
//vector数组定义:
vector<typename> arrayname[size];
//arrayname[0]--arrayname[size-1]都是一个vector容器
//与vector<vector<typename> > name 不同的是,vector数组写法一维长度已经固定,另一维变化
1.2访问元素:
/*
两种访问方式:
*/
// 1.通过下标访问
vector<typename> vi;
//直接访问 vi[index] 即可
//2.通过迭代器访问:
vector<typename>::iterator it;
//通过 *it访问vector里的元素
vector<int> vi;
vector<int>::iterator it=vi.begin();
printf ( " % d \ n " , *( it+1) );
//另一种写法
for( vector<int>::iterator it=vi.begin();it!=vi.end();it++){
printf("%d",*it)
}
// begin()函数的作用是取vi的首元素地址,end()函数取尾元素地址的下一个地址
//只有vector和string中,才允许使用vi.begin()+n这中迭代器加证书的写法
1.3 常用函数:
// push_back() ---------push_back(x)在vector后面添加一个元素x
for(int i=1;i<=3;i++){
vi.push_back(i);
}
// pop_back() ------------删除vector的尾元素
// size() ---------------获得vector元素的个数
printf("%d\n",vi.size());
// clear() ----------------清空vector中的所有元素
// insert() ---------------- insert ( it , x ) 向vector的任意迭代器it处插入一个元素x
vi.insert(vi.begin+2,-1);
// erase() ---------------删除单个元素或者删除一个区间内所有元素
vi.erase(it)// 删除迭代器为it处的元素
vi.erase(vi.begin()+3)
vi.erase(first,last) //删除【first,last)内所有元素
vi.erase(vi.begin