map/set/multimap/multiset/unordered_map

map

  • map<key, value, compare>
    • map<int, string, less[int]> key的类型为int, value的类型为string,less[int]为按key的值从小到大排列
  • mp[key]
    • 如果key不存在则使用默认value与key构造键值对并插入
    • 如果key存在,则返回key对应的value值
  • map.insert(make_pair( , ));
    • map(make_pair(“abc”, 1);
    • map(make_pair(“abc”, 2);
    • 如果插入的key值相同,则值插入第一个
	map<char, int> mp;
	mp.insert(make_pair('a', 10));
	mp.insert(make_pair('a', 20));
	mp.insert(make_pair('a', 30));
	//值插入了'a' 10
  • map.first 返回key值 map.second 返回value值
  • map.find(key);在map中插入key为x的元素,找到返回该元素的位
    置的迭代器,否则返回end
    map.count(key) : 返回key为x的键值在map中的个数,返回 1 或 0

multimap

  • 可以插入相同key值的元素
  • 与map的接口基本一致
  • 没有[]操作
  • ret = equal_range(key) : ret.first 第一个key的位置, ret.second 最后一个key的下一个位置
    • ret 的类型为pair(multimap<T, T>::iterator,multimap<T, T>::iterator)

set

  • 无[]操作
  • 有序排列
  • 在底层存放的是由<value, value>构成的键值对
  • find(x) : 返回set中值为x的元素的位置
  • count(x) : 返回值为x的元素的个数
  • set可以去重

multiset

  • 存放相同key的元素
  • 与set接口基本一致

unordered_map/_set

unordered_multimap/_multiset

  • 元素无序排列

红黑树容器 有序 O(LogN)

map
multimap
set
multiset

哈希表容器 无序 O(1)

unordered_map
unordered_multimap
unordered_set
unordered_multiset

对应容器的接口基本一致

发布了80 篇原创文章 · 获赞 7 · 访问量 3800

猜你喜欢

转载自blog.csdn.net/qq_44905386/article/details/104250711