vector,map

来源:互联网 发布:男科医院网络预约挂号 编辑:程序博客网 时间:2024/06/07 01:49

要使用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




原创粉丝点击