vector、set、multiset、map和multimap
一:vector
在使用它时, 需要包含头文件 #include<vector>
vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所要放入的元素。此外, vector 也提供了许多的方法来对自身进行操作
二、向量的声明及初始化
vector 型变量的声明以及初始化的形式也有许多, 常用的有以下几种形式
vector<int> a ; //声明一个int型向量a
vector<int> a(10) ; //声明一个初始大小为10的向量
vector<int> a(10, 1) ; //声明一个初始大小为10且初始值都为1的向量
vector<int> b(a) ; //声明并用向量a初始化向量b
vector<int> b(a.begin(), a.begin()+3) ; //将a向量中从第0个到第2个(共3个)作为向量b的初始值
int n[] = {1, 2, 3, 4, 5} ;
vector<int> a(n, n+5) ; //将数组n的前5个元素作为向量a的初值
vector<int> a(&n[1], &n[4]) ; //将n[1] - n[4]范围内的元素作为向量a的初值
三、元素的输入及访问
元素的输入和访问可以像操作普通的数组那样, 用cin>>进行输入, cout<<a[n]这样进行输出:
示例:
#include<iostream>
#include<vector>
using namespace std ;
int main()
{
vector<int> a(10, 0) ; //大小为10初值为0的向量a
//对其中部分元素进行输入
cin >>a[2] ;
cin >>a[5] ;
cin >>a[6] ;
//全部输出
int i ;
for(i=0; i<a.size(); i++)
cout<<a[i]<<" " ;
return 0 ;
}
//全部输出
vector<int>::iterator t ;
for(t=a.begin(); t!=a.end(); t++)
cout<<*t<<" " ;
四、向量的基本操作
a.size() //获取向量中的元素个数
a.empty() //判断向量是否为空
a.clear() //清空向量中的元素
a = b ; //将b向量复制到a向量中
b.swap(a) ; //a向量与b向量进行交换
比较
保持 ==、!=、>、>=、<、<= 的惯有含义 ;
如: a == b ; //a向量与b向量比较, 相等则返回1
插入 - insert
a.insert(a.begin(), 1000); //将1000插入到向量a的起始位置前
a.insert(a.begin(), 3, 1000) ; //将1000分别插入到向量元素位置的0-2处(共3个元素)
b.insert(b.begin(), a.begin(), a.end()) ; //将a.begin(), a.end()之间的全部元素插入
到b.begin()前
删除 - erase
b.erase(b.begin()) ;