本文共 2890 字,大约阅读时间需要 9 分钟。
map常用成员(关联容器)----创建map<主键,主键对应的值>,增insert,删erase,改查找find,然后修改second,遍历iterator,获取元素个数size,判空empty
map是STL的一个关联容器,它提供一对一(第一个字段为关键字,每个关键字只能在map中出现一次,第二个字段称为该关键字的值)的数据处理能力,由于这个特性 map内部的实现自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。 map<int ,string> object; //map<主键,主键对应的值> 在map<key,value>类型中对key的要求: 因为map内部的实现采用的是一颗红黑树(类似平衡二叉树),所以,它要按照key值比较大小(弱排序),所以,对key类型的唯一要求是,它必须支持<操作,至于是否支持其他的关系或相等元算,不做要求。 例如:: 我们定义了一个类作为Key,那么必须让它支持<操作,否则是不可以的。 增 insert 数组方式object[key_value] = value; map<int,string>::value_type value(1,"billchen"); 也可以用 value.insert(map<int,string>::value_type(1,"billchen"));作用是一样的。 object.insert(pair<int,string>(1,"billchen")); object.insert(make_pair(1,"billchen")); 其中pair是一个模板pair<T1,T2> pvalue(v1,v2);表示创建一个pair对象, 其中make_pair(v1,v2);表示以v1,v2创建一个新的pair对象,类型是v1和v2的类型。 一般用在map的insert方法中,创建临时对象。 object[1]="billchen"; //object[key_value]=value; (在key值对应的空间填写数据) map<int,string>::iterator iter = object.find(key); object.erase(key); //删除成功,返回1,删除失败,返回0 删除map中的一段,如迭代器iter_begin到iter_end的元素: iter_begin = object.find(key_value1); iter_end = object.find(key_value2); if(iter_begin != object.end() && iter_end != object.end()) object.erase(iter_begin,iter_end); 删除所有元素使用erase: map<int,string>::iterator iter=object.begin(); while(iter!=object.end()) object.erase(iter++); //这样做,是为了防止迭代器失效。 map<int,string>::iterator iter = object.find(key); #include <iostream> #include <string> #include <map> using namespace std; int main(int argc,char *argv[]) { int i; map<char,string> obj; map<char,string>::value_type mem1('a',"billchen"); obj.insert(mem1); map<char,string>::iterator iter = obj.begin(); while(iter != obj.end()) //修改 { iter->second="wang"; iter++; } iter=obj.begin(); while(iter != obj.end()) //遍历 { cout << iter->first << endl; cout << iter->second << endl; iter++; } return 0; } if(object.find(主键) == object.end()) map<int,string>::iterator iter=object.begin(); while(iter!=object.end()) cout<<iter->first<<iter->second等等<<endl; 适当的情况下,可以使用数组的方式来进行map的遍历。 map<int,string> obj; map<int,string>::value_type mem1(1,"billchen"); map<int,string>::value_type mem2(2,"chenbaihu"); obj.insert(mem1); obj.insert(mem2); cout << obj.size() <<endl; 转载地址:http://sauab.baihongyu.com/