声明unordered_map,并且循环遍历std::unordered_map<int, FuncServerPtr> m_cmd,举例
时间: 2024-04-26 09:19:13 浏览: 141
unordered_map是C++ STL中的一种关联容器,它存储的数据是以键值对的形式出现,且具有快速查找的特点。其中,键(key)和值(value)都可以是任何可复制的数据类型。
下面是声明一个unordered_map的示例:
```
#include <unordered_map>
using namespace std;
unordered_map<int, string> myMap; //声明一个存储int和string类型的unordered_map
```
循环遍历unordered_map可以使用迭代器来实现,具体代码如下:
```
#include <unordered_map>
using namespace std;
int main() {
unordered_map<int, string> myMap = {{1, "CSDN"}, {2, "AI"}};
// 遍历unordered_map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
cout << "Key: " << it->first << ", Value: " << it->second << endl;
}
return 0;
}
```
上述代码中,我们使用auto关键字定义了一个迭代器it,it指向myMap的起始位置,然后通过it++来遍历整个myMap。
相关问题
声明unordered_map,并且循环遍历std::unordered_map<int, 函数指针> m_cmd,举例
std::unordered_map是C++ STL中的一个容器,它提供了一种将键映射到值的方法。在这个容器中,每个键必须是唯一的,它们用于在O(1)时间内查找与特定键相关联的值。
下面是一个循环遍历std::unordered_map<int, 函数指针> m_cmd的示例:
```
#include <unordered_map>
#include <iostream>
void func1() {
std::cout << "Function 1 is called." << std::endl;
}
void func2() {
std::cout << "Function 2 is called." << std::endl;
}
void func3() {
std::cout << "Function 3 is called." << std::endl;
}
int main() {
std::unordered_map<int, void (*)()> m_cmd;
m_cmd = func1;
m_cmd = func2;
m_cmd = func3;
for (auto it = m_cmd.begin(); it != m_cmd.end(); ++it) {
std::cout << "Function pointer of key " << it->first << " is called." << std::endl;
it->second();
}
return 0;
}
```
在这个例子中,我们创建了一个std::unordered_map对象m_cmd,它的键是int类型,值是函数指针类型。我们添加了三个函数指针到m_cmd中,并使用迭代器遍历这个容器,在遍历过程中,我们打印出每个键的值并调用相应的函数。
cpp 如何遍历std::unordered_map<int, std::vector<int>>
在 C++ 中,遍历 `std::unordered_map<int, std::vector<int>>` 类型的数据结构可以分为两个步骤:首先,迭代整个 map;其次,对于每个 key-value 对,再遍历对应的 vector。
下面是一个简单的示例,展示如何遍历这样的数据结构:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
// 创建一个 unordered_map
std::unordered_map<int, std::vector<int>> myMap = {
{1, {2, 3, 4}},
{5, {6, 7, 8}},
{9, {10, 11, 12}}
};
for (const auto& pair : myMap) {
int key = pair.first;
std::vector<int> values = pair.second;
std::cout << "Key: " << key << ", Vector: ";
for (int value : values) {
std::cout << value << " ";
}
std::cout << "\n";
}
return 0;
}
```
在这个例子中,我们使用 `for_each` 或者范围-based for循环 (`for (const auto& pair : myMap)`) 来遍历 map 的每一项。然后,分别访问 key 和对应的 vector。对于 vector,我们再次使用 range-based for 循环来遍历其元素。
阅读全文
相关推荐

















