unordered_map was not declared in this scope
时间: 2023-11-15 15:00:07 浏览: 93
"unordered_map was not declared in this scope"是一个编译错误,意味着编译器无法找到unordered_map的定义。unordered_map是C++ STL库中的一个关联容器,用于存储键值对。通常情况下,这个错误是由于未正确包含头文件或使用了错误的命名空间引起的。解决这个问题的方法是确保你已经正确包含了头文件,并且使用了正确的命名空间。在C++11标准中,unordered_map被定义在头文件<unordered_map>中,而在早期的标准中,它被定义在头文件<tr1/unordered_map>中。如果你使用的是早期的标准,你需要在unordered_map之前加上tr1库名。如果你已经正确包含了头文件并使用了正确的命名空间,但仍然遇到这个错误,那么你可能需要检查你的编译器是否支持C++11标准。
相关问题
devc++用unordered_map报错
当你在DevC++中使用unordered_map时,报错"unordered_map was not declared in this scope"是因为DevC++默认不支持C++11的标准库。unordered_map是C++11中引入的容器,如果你想使用它,你需要将编译器的选项设置为支持C++11标准。
解决这个问题的方法有两种:
1. 使用DevC++自带的TDM-GCC编译器,它支持C++11标准。你可以在菜单栏中选择"Tools" -> "Compiler Options",然后在"General"选项卡中选择"Use custom compiler",并且选择TDM-GCC编译器。这样就可以使用unordered_map了。
2. 如果你想继续使用DevC++默认的编译器,你可以尝试以下方法来使unordered_map可用:
a. 在你的代码中添加以下行:
```cpp
#include <bits/stdc++.h>
using namespace std;
```
b. 或者在代码的开头添加以下行:
```cpp
#define __cplusplus 201103L
```
c. 或者在编译器的选项中添加"-std=c++11"参数,这样可以告诉编译器使用C++11标准。
unordered_map赋值unordered_map
根据引用[1]和引用[2],可以使用赋值运算符来将一个unordered_multimap列表复制给另一个unordered_multimap列表。赋值运算符的原型是unordered_multimap& operator=( const unordered_multimap& other )。这将使得目标unordered_multimap列表包含与源unordered_multimap列表相同的元素。
另外,根据引用[3],可以使用拷贝构造函数来创建一个新的unordered_multimap容器,其中新unordered_multimap容器中的元素来自于另一个unordered_multimap容器中元素的副本。拷贝构造函数的原型是unordered_multimap( const unordered_multimap& ums )。
因此,可以使用赋值运算符或拷贝构造函数来实现unordered_multimap的赋值操作。