Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1071238
  • 博文数量: 139
  • 博客积分: 1823
  • 博客等级: 上尉
  • 技术积分: 3403
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-05 09:54
文章存档

2014年(7)

2013年(16)

2012年(48)

2011年(68)

分类: C/C++

2013-07-03 17:47:07

一,map
A  map is defined as a pair of values: a key, typically a string that serves as an index and a value associated with that key. A dictionary is one example of a map. A program

analyzing the occurrence count of words in a text keeps a map with a string key and an integer value representing an occurrence count.//常见的定义是:map my_Map;

string 表示字符值,int表示这个值在这个map中出现的次数。

1, 插入数据
  (1)   my_Map["a"]   =   1;
  (2)   my_Map.insert(map::value_type("b",2));
  (3)   my_Map.insert(pair("c",3));
  (4)   my_Map.insert(make_pair("d",4));
 
2, 查找数据
 
   find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。       
   map::iterator l_it;;
   l_it=maplive.find(112);
   if(l_it==maplive.end())
                cout<<"we do not find 112"<    else cout<<"wo find 112"<  
3, 删除数据
  (1)   my_Map.erase(my_Itr);
  (2)   my_Map.erase("c");
  还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。
 
4, 迭代数据
  for   (my_Itr=my_Map.begin();   my_Itr!=my_Map.end();   ++my_Itr)   {}
 
5, 基本操作函数
      begin()          返回指向map头部的迭代器
      clear()         删除所有元素
      count()          返回指定元素出现的次数
      empty()          如果map为空则返回true
      end()            返回指向map末尾的迭代器
      equal_range()    返回特殊条目的迭代器对
      erase()          删除一个元素
      find()           查找一个元素
      get_allocator()  返回map的配置器
      insert()         插入元素
      key_comp()       返回比较元素key的函数
      lower_bound()    返回键值>=给定元素的第一个位置
      max_size()       返回可以容纳的最大元素个数
      rbegin()         返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器
      size()           返回map中元素的个数
      swap()            交换两个map
      upper_bound()     返回键值>给定元素的第一个位置
      value_comp()      返回比较元素value的函数

二,set


通常,set中的元素按从小到大的顺序排列,例如,若有

int ia[10] = { 1, 3, 5, 8, 5, 3, 1, 5, 8, 1 } ; 
 
vector vec(ia, ia+10); 
set iset(vec.begin(), vec.end()); 

iset中的包含元素:{1,3,5,8}.//不允许元素重复

单个元素的插入可用insert() :
iset.insert(ival);

一系列的元素插入可用带两个参数的insert():
iset.insert(vec.begin(), vec.end());
 
迭代
set::iterator it = iset.begin(); 
for (; it != iset.end(); ++it) 
    cout << *it << ' '; 
 
cout << endl;

更多关于set方法可以参考:

参考:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html

阅读(3163) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~