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的定位器