c++unordered_map三变量用法
时间: 2023-11-11 07:04:06 浏览: 173
C++中的unordered_map是一种关联容器,它将键映射到值。它的三个模板参数分别是键类型、值类型和哈希函数类型。其中,键类型和值类型是必须的,而哈希函数类型是可选的。如果不指定哈希函数类型,则默认使用std::hash作为哈希函数。下面是一个示例代码,展示了unordered_map的三个模板参数的用法:
```c++
#include <iostream>
#include <string>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> mymap = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
std::cout << "mymap[\"apple\"] = " << mymap["apple"] << std::endl;
std::cout << "mymap[\"banana\"] = " << mymap["banana"] << std::endl;
std::cout << "mymap[\"orange\"] = " << mymap["orange"] << std::endl;
return 0;
}
```
输出结果为:
```
mymap["apple"] = 1
mymap["banana"] = 2
mymap["orange"] = 3
```
相关问题
c++如何初始化两层unordered_map的变量
可以使用以下方式初始化两层unordered_map的变量:
```c++
#include <unordered_map>
int main() {
std::unordered_map<int, std::unordered_map<int, int>> my_map = {
{1, {{2, 3}, {4, 5}}},
{6, {{7, 8}, {9, 10}}}
};
return 0;
}
```
在上面的例子中,我们初始化了一个两层的unordered_map,其中第一层的key类型为int,第二层的key类型为int,value类型为int。我们使用了花括号初始化列表来初始化整个unordered_map。在初始化列表中,我们先列出第一层的key和value,然后在value中再使用另一组花括号来列出第二层的key和value。
C++ 判断unordered_map变量名是否被定义
在C++中,我们可以使用预处理指令`#ifdef`和`#ifndef`来判断变量名是否被定义。
`#ifdef`指令用于判断某个宏是否已经被定义过。例如:
```
#ifdef MAP
// MAP已经被定义过
#else
// MAP未被定义
#endif
```
`#ifndef`指令则是判断某个宏是否未被定义过。例如:
```
#ifndef MAP
// MAP未被定义
#else
// MAP已经被定义过
#endif
```
因为`unordered_map`是一个C++标准库中的类型,不是宏,所以我们可以使用以下方式来判断`unordered_map`变量名是否被定义过:
```
#ifdef unordered_map
// unordered_map变量名已经被定义过
#else
// unordered_map变量名未被定义
#endif
```
但是这种方式并不是很常见,因为我们通常不会在代码中使用`#ifdef`或`#ifndef`来判断标准库中的类型是否被定义过。
阅读全文