递归map
#include <bits/stdc++.h>
using namespace std;
class B {
public:
string key;
map<string, B> nestedMap;
};
map<string, B> mp;
B* findKeyInNestedMap(const string& key, map<string, B>& mp) {
for (auto& item : mp) {
if (item.first == key) return &(item.second);
else {
B* result = findKeyInNestedMap(key, item.second.nestedMap);
if (result != nullptr)
return result;
}
}
return nullptr; // not found
}
int main() {
string key = "name";
B* result = findKeyInNestedMap(key, mp);
if (result != nullptr) cout << result->key << endl;
else cout << "NOT FIND!" << endl;
return 0;
}
测试
#include <bits/stdc++.h>
using namespace std;
class B {
public:
string key;
map<string, B> nestedMap;
};
map<string, B> mp;
B* findKeyInNestedMap(const string& key, map<string, B>& mp) {
for (auto& item : mp) {
if (item.first == key) return &(item.second);
else {
B* result = findKeyInNestedMap(key, item.second.nestedMap);
if (result != nullptr)
return result;
}
}
return nullptr; // not found
}
int main() {
B b1, b2, b3;
b1.key = "b1_key";
b2.key = "b2_key";
b3.key = "b3_key";
// 嵌套的 map 中的值也是一个嵌套的 map
b1.nestedMap["name"].key = "b1_nested_value1";
b2.nestedMap["b2_nested_key1"].key = "b2_nested_value1";
b2.nestedMap["b2_nested_key2"].key = "b2_nested_value2";
b3.nestedMap["b3_nested_key1"].key = "b3_nested_value1";
b3.nestedMap["b3_nested_key2"].key = "b3_nested_value2";
mp.insert({
"b1", b1 });
mp.insert({
"b2", b2 });
mp.insert({
"b3", b3 });
string testKey1 = "name";
B* result1 = findKeyInNestedMap(testKey1, mp);
if (result1 != nullptr) cout << result1->key << endl;
else cout << "NOT FIND!" << endl;
return 0;
}
文章评论