1.set,multiset,unordered_set
集合 | 底层实现 | 是否有序 | 数值是否可以重复 | 能否更改数值 | 查询效率 | 增删效率 |
---|---|---|---|---|---|---|
set | 红黑树 | 有序 | 否 | 否 | O(logn) | O(logn) |
multiset | 红黑树 | 有序 | 是 | 否 | O(logn) | O(logn) |
unordered_set | 哈希表 | 无序 | 否 | 否 | O(1) | O(1) |
映射 | 底层实现 | 是否有序 | 数值是否可以重复 | 能否更改数值 | 查询效率 | 增删效率 |
---|---|---|---|---|---|---|
map | 红黑树 | key有序 | key否 | key否 | O(logn) | O(logn) |
multimap | 红黑树 | key有序 | key是 | key否 | O(logn) | O(logn) |
unordered_map | 哈希表 | key无序 | key否 | key否 | O(1) | O(1) |
主要用途:判断某个数是否出现过
unordered_set的常用代码
unordered_set<int> res;
if(res.find(candyType[i])!=res.end()) //判断是否出现过
unordered_set<int> res;
res.insert(1);//插入
res.erase(1);//删除
for ( auto it = res.begin(); it != res.end(); it++ ) //遍历