map常用成员(关联容器)----创建map<主键,主键对应的值>,增insert,删erase,改查找find,然后修改second,遍历iterator,获取元素个数size,判空empty
map是STL的一个关联容器,它提供一对一(第一个字段为关键字,每个关键字只能在map中出现一次,第二个字段称为该关键字的值)的数据处理能力,由于这个特性map内部的实现自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。头文件::#include#includeusing namespace std;创建map对象::map o
   ·  
 map是STL的一个关联容器,它提供一对一(第一个字段为关键字,每个关键字只能在map中出现一次,第二个字段称为该关键字的值)的数据处理能力,由于这个特性
map内部的实现自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。
 
 
 
 
 
 
  删除所有元素使用erase:
 
 
 map内部的实现自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。
 头文件::
 #include <iostream>
 #include <map>
 using namespace std;
 创建map对象::
 map<int ,string> object; //map<主键,主键对应的值>
 注意:
 在map<key,value>类型中对key的要求:
 因为map内部的实现采用的是一颗红黑树(类似平衡二叉树),所以,它要按照key值比较大小(弱排序),所以,对key类型的唯一要求是,它必须支持<操作,至于是否支持其他的关系或相等元算,不做要求。
 例如:: 我们定义了一个类作为Key,那么必须让它支持<操作,否则是不可以的。
 增 insert 数组方式object[key_value] = value;
 创建map的成员::
 方法一、插入value_type 
 map<int,string>::value_type value(1,"billchen");
 object.insert(value);
 也可以用 value.insert(map<int,string>::value_type(1,"billchen"));作用是一样的。 
  方法二、插入pair或make_pair数据
 
 
  map<int,string> object;
 
 
  object.insert(pair<int,string>(1,"billchen"));
 
 
  或者
 
 
  object.insert(make_pair(1,"billchen")); 
 
 
  /*
 
 
  其中pair是一个模板pair<T1,T2> pvalue(v1,v2);表示创建一个pair对象,
 
 
  v1和v2的类型是T1和T2,值是v1和v2。
 
 
  可以取出v1和v2的值,
 
 
  分别是pvalue.first 为 v1
 
 
  pvalue.second 为 v2
 
 
  */
 
 
  /*
 
 
  其中make_pair(v1,v2);表示以v1,v2创建一个新的pair对象,类型是v1和v2的类型。
 
 
  一般用在map的insert方法中,创建临时对象。
 
 
  */
 
 方法三、数组方式
 map<int,string> object;
 object[1]="billchen"; //object[key_value]=value; (在key值对应的空间填写数据)
 删 erase clear
  删除map中的一个元素,使用erase
 
 
  方法一、通过迭代器删除 
 
 
  map<int,string>::iterator iter = object.find(key); 
 
 
  if(iter != object.end())
 
 
  {
 
 
  object.erase(iter); 
 
 
  }
 
 
  方法二、通过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);
  
  
   }
  
 
 方法一、使用迭代器,遍历删除 
 map<int,string>::iterator iter=object.begin();
 while(iter!=object.end())
 {
 object.erase(iter++);  //这样做,是为了防止迭代器失效。
 }
  方法二、调用clear接口
 
 
  object.clear();
 
 改 (修改map中成员的值)
 修改map中成员的值(迭代器):
 map<int,string>::iterator iter = object.find(key);
 iter->second="wang";
 修改map中成员的值(数组方式):
 map[key] = "wang";
 例如:
 #include <iostream>
#include <string>
#include <map>
using namespace std;
#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;
}
{
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;
}
 查 find
 查找使用find(主键);
 object.find(主键);
 返回值为iterator(迭代器),
 if(object.find(主键) == object.end())
 {
 cout << "没有找到" <<endl;
 }
 遍历
 遍历方法1: 通过迭代器
 map<int,string>::iterator iter=object.begin(); 
 
  
 
 
  
 
  while(iter!=object.end())
 
 
  {
 
 
  cout<<iter->first<<iter->second等等<<endl;
 
 
  iter++;
 
 
  }
 
 
  适当的情况下,可以使用数组的方式来进行map的遍历。
 
 
  获取map中成员的个数 size()
 
 
  获取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;
 
 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;
  判断map是否为空,使用empty 
 
 
  为空,返回true,不为空,返回false;
 
 更多推荐
 



所有评论(0)