map and set

来源:互联网 发布:淘宝top10销量排行榜 编辑:程序博客网 时间:2024/05/18 00:43

map的节点是一对数据.
set的节点是一个数据.

map使用关键值key来唯一标识每一个成员 map可以重复: map<type1, type2> mymap;
set是集合 : set<type> myset;

1. map用法:

map<int, string> mapStudent;  
  • 插入数据

    insert函数插入pair数据:mapStudent.insert(pair<int, string>(1, "student_one"));
    insert函数插入value_type数据:mapStudent.insert(map<int, string>::value_type (1, "student_one"));
    数组方式插入:mapStudent[1] = "student_one";

  • map大小

map.size();
  • map遍历
map<int, string>::iterator iter;  for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)  //rbegin rend反向迭代       cout<<iter->first<<' '<<iter->second<<endl;  }  for(auto it : mp)        print it.first and it.second
  • 查找元素:

    find();//返回一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器
    count();//返回值只有两个,要么是0,要么是1

  • 删除元素

iterator erase(iterator it);//通过一个条目对象删除iterator erase(iterator first,iterator last)//删除一个范围size_type erase(const Key&key);//通过关键字删除clear();//就相当于enumMap.erase(enumMap.begin(),enumMap.end());

2.unordered_map

map的内部实现是二叉平衡树(红黑树),map中的元素是有序的,重载operator<;
unordered_map内部是一个hash_table,元素是无序的,重载hash_value();

3.set用法

begin()     返回set容器的第一个元素end()      返回set容器的最后一个元素clear()     删除set容器中的所有的元素empty()    判断set容器是否为空max_size()   返回set容器可能包含的元素最大个数size()     返回当前set容器中的元素个数rbegin     返回的值和end()相同rend()     返回的值和rbegin()相同count()       用来查找set中某个某个键值出现的次数equal_range()  返回一对定位器,分别表示第一个大于或等于给定关键值的元素和 第一个大于给定关键值的元素insert(key_value); //将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。inset(first,second);将定位器first到second之间的元素插入到set中,返回值是void.lower_bound(key_value) ,返回第一个大于等于key_value的定位器upper_bound(key_value),返回最后一个大于等于key_value的定位器
原创粉丝点击