cpp11std::unordered_map和std::unordered_set
时间: 2023-05-31 11:03:27 浏览: 82
cpp11std::unordered_map和std::unordered_set是C++11中引入的两个新容器。
cpp11std::unordered_map是一个无序关联容器,类似于std::map,但是它的元素是无序的。它使用哈希表来实现元素的存储和访问,因此它的查找和插入操作的时间复杂度为O(1)。它的元素可以是任意类型的,但是必须提供一个哈希函数和一个相等比较函数。
std::unordered_set也是一个无序容器,类似于std::set,但是它的元素是无序的。它也使用哈希表来实现元素的存储和访问,因此它的查找和插入操作的时间复杂度为O(1)。它的元素可以是任意类型的,但是必须提供一个哈希函数和一个相等比较函数。
这两个容器的使用方法与std::map和std::set类似,但是由于它们是无序的,因此它们的迭代器不支持比较操作。此外,它们还提供了一些特殊的操作,例如bucket_count()和load_factor(),用于查询哈希表的大小和负载因子。
相关问题
怎么把元素插入到unordered_map<int> result_set;
在 C++ 中,你可以使用 `unordered_map` 的 `insert` 函数将元素插入到哈希表中。以下是一个示例:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, int> result_set;
// 插入键值对
result_set.insert(std::make_pair(1, 10));
result_set.insert(std::make_pair(2, 20));
result_set.insert(std::make_pair(3, 30));
// 打印哈希表
for (const auto& pair : result_set) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
在上面的示例中,我们首先创建了一个名为 `result_set` 的空的 `unordered_map`。
然后,通过使用 `insert` 函数将键值对插入到哈希表中。我们使用 `std::make_pair` 函数来创建键值对,第一个参数是键,第二个参数是值。
最后,我们遍历哈希表,并打印每个键值对的键和值。
请注意,`insert` 函数将在插入时检查键是否已经存在于哈希表中。如果键已经存在,则不会进行插入操作。如果你想要覆盖已经存在的键的值,可以使用赋值操作符来实现:`result_set[key] = value;`
希望这个示例对你有所帮助!如果你有任何其他问题,请随时提问。
unordered_map报错
当编译器报错"can not find tr1/unordered_map"或其他与tr1相关的错误时,可以尝试以下解决方法:
1. 添加编译选项"-std=c++0x"(或者"-std=c++11")来启用C++11标准,例如:
g++ -o demo -std=c++0x demo.cpp
2. 在导入所有的unordered_xx包时,添加tr1,并使用using namespace std::tr1,例如:
#include <tr1/unordered_set>
#include <tr1/unordered_map>
using namespace std::tr1;
3. 将所有的unordered_去掉,直接使用set或map。虽然数据结构不同,但大部分情况下可以使用unordered_map和unordered_set来实现,同样,使用map和set也能实现相同的功能。
因此,可以根据具体情况选择适合的解决方法来解决unordered_map报错的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [libcppjieba:CppJieba的清爽头文件库](https://download.csdn.net/download/weixin_42181693/19281693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [蓝桥杯C++使用unordered_set和unordered_map报错如何处理](https://blog.csdn.net/weixin_43141320/article/details/115768207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]