要使用vector必须包含头文件#include<vector>
定义一个vector有三种方法
vector<类型> 标示符
vector<类型> 标示符(最大容量)
vector<类型> 标示符(最大容量,初始值所以值)
类型可以是各种数据类型,对象也行
对一个vector赋值:
vector<int> vectortest;
//如果在定义时声明了最大容量,可以用和数组一样的方法,其实就相当于在定义时给分配了内存
vector<int> vectortest(5);
vectortest[0]=0;
//如果在定义vector是没有声明最大容量,那么只能用push_back(),就相当于是一个动态大小的数组
vector<int> vectortest;
vectortest.push_back(0);
当然也可以这样
vector<int> vectortest(5);
vectortest.push_back(0);
printf("%d",vectortest.size());
不过这样它的大小就是6了,因为会在原有的大小上追加大小
删除最上面的可以用pop_back(),每pop_back()一次vectortest.size()也会减1
删除指定位置用erase(),它的参数是iterator(迭代器),迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针;
这时比如我们要删除一个vector中的所有是0的元素
vector<int> vectortest;
vectortest.push_back(1);
vectortest.push_back(0);
vectortest.push_back(0);
vectortest.push_back(3);
vectortest.push_back(0);
vector<int>::iterator it=vectortest.begin();
while(it!=vectortest.end()){
if(*it==0){
it=vectortest.erase(it);
}else{
it++;
}
}
for(auto a:vectortest){
printf("%d ",a);
}
输出为1 3,这样我们就把0全部删了
map
使用时也要包含头文件#include<map>
用来存放键值
map<数据类型,数据类型>
比如我们定义一个map<int,std::string> testmap;
我们可以这样存入数据
testmap[1]="aaa"
testmap.insert(map<int,string>::value_type(1,"aaa"));
当我们要删除或读取其中数据时要先判断该键是否存在,如果输出一个不存在的键的值程序会中断
比如:
map<int,string> testmap;
testmap.insert(map<int,string>::value_type(1,"aaa"));
testmap.insert(map<int,string>::value_type(2,"bbb"));
testmap.insert(map<int,string>::value_type(3,"ccc"));
testmap.insert(map<int,string>::value_type(4,"ddd"));
map<int,string>::iterator it=testmap.find(3);//创建一个迭代器等于find返回的结果
if(it!=testmap.end()){//如果不等于end()则说明存在这个键
testmap.erase(it);//删除
}
全部输出测试一下
for(it=testmap.begin();it!=testmap.end;it++){
printf("%d,%s\n"it->first.c_str(),it->second.cstr());
}
1,aaa
2,bbb
4,ddd