您好,登录后才能下订单哦!
C++11标准引入了无序关联容器(Unordered Associative Containers),这些容器基于哈希表实现,提供了平均常数时间复杂度的插入、删除和查找操作。与有序关联容器(如std::map
和std::set
)不同,无序关联容器不维护元素的顺序,而是通过哈希函数将元素映射到桶中。C++11标准中定义了四种无序关联容器,分别是std::unordered_set
、std::unordered_multiset
、std::unordered_map
和std::unordered_multimap
。
std::unordered_set
std::unordered_set
是一个无序集合,它存储唯一的元素。与std::set
不同,std::unordered_set
不保证元素的顺序,而是通过哈希函数将元素映射到桶中。std::unordered_set
的主要特点包括:
std::unordered_set
中的元素是唯一的,不允许重复。#include <unordered_set>
#include <iostream>
int main() {
std::unordered_set<int> uset = {1, 2, 3, 4, 5};
uset.insert(6);
uset.erase(3);
for (const auto& elem : uset) {
std::cout << elem << " ";
}
return 0;
}
std::unordered_multiset
std::unordered_multiset
是一个无序多重集合,它允许存储重复的元素。与std::unordered_set
类似,std::unordered_multiset
也不保证元素的顺序,而是通过哈希函数将元素映射到桶中。std::unordered_multiset
的主要特点包括:
std::unordered_multiset
中的元素可以重复。#include <unordered_set>
#include <iostream>
int main() {
std::unordered_multiset<int> umset = {1, 2, 2, 3, 4, 4, 5};
umset.insert(6);
umset.erase(2);
for (const auto& elem : umset) {
std::cout << elem << " ";
}
return 0;
}
std::unordered_map
std::unordered_map
是一个无序映射容器,它存储键值对。与std::map
不同,std::unordered_map
不保证键值对的顺序,而是通过哈希函数将键映射到桶中。std::unordered_map
的主要特点包括:
std::unordered_map
存储键值对,键是唯一的。#include <unordered_map>
#include <iostream>
int main() {
std::unordered_map<std::string, int> umap = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};
umap.insert({"date", 4});
umap.erase("banana");
for (const auto& pair : umap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
std::unordered_multimap
std::unordered_multimap
是一个无序多重映射容器,它允许存储多个具有相同键的键值对。与std::unordered_map
类似,std::unordered_multimap
也不保证键值对的顺序,而是通过哈希函数将键映射到桶中。std::unordered_multimap
的主要特点包括:
std::unordered_multimap
中的键可以重复,允许多个键值对具有相同的键。#include <unordered_map>
#include <iostream>
int main() {
std::unordered_multimap<std::string, int> ummap = {{"apple", 1}, {"apple", 2}, {"banana", 3}};
ummap.insert({"banana", 4});
ummap.erase("apple");
for (const auto& pair : ummap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
C++11标准引入了四种无序关联容器:std::unordered_set
、std::unordered_multiset
、std::unordered_map
和std::unordered_multimap
。这些容器基于哈希表实现,提供了平均常数时间复杂度的插入、删除和查找操作。与有序关联容器不同,无序关联容器不维护元素的顺序,而是通过哈希函数将元素映射到桶中。根据具体需求,可以选择合适的无序关联容器来存储和操作数据。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。