2
A
回答
2
尝试
auto outerIt = MyMap.find(someInt);
if(outerIt != MyMap.end()) {
auto innerIt = (*outerIt)->find(someDWord);
if(innerIt != (*outerIt)->end()) {
auto yourElement = *innerIt;
}
}
1
如果您确定键的存在,你也可以尝试:
IDLL::CClass* x = (*MyMap[key1])[key2];
0
如果你不能确定键存在:
std::map<DWORD,IDLL::CClass*>* inner = MyMap[key1];
IDLL::CClass* x = 0;
if(inner)
x = (*inner)[key2];
if(x)
std::cout << "Winner! " << *x << "\n";
else
std::cout << "Loser.\n";
1
您可以分两步使用std::map::find
:先到f指示与外部地图中的键相关联的值,然后重复内部地图。
下面的编译代码似乎与VS2010 SP1(VC10)工作:
#include <iostream>
#include <map>
typedef unsigned int DWORD;
namespace IDLL
{
struct CClass
{
CClass() : n(0) {}
explicit CClass(int nn) : n(nn) {}
int n;
};
} // namespace IDLL
int main()
{
//
// Prepare maps for testing
//
std::map<int, std::map<DWORD,IDLL::CClass*>*> MyMap;
IDLL::CClass c1(10);
IDLL::CClass c2(20);
std::map<DWORD, IDLL::CClass*> m1;
m1[10] = &c1;
m1[20] = &c2;
MyMap[30] = &m1;
//
// Testing code for maps access
//
const int keyOuter = 30;
auto itOuter = MyMap.find(keyOuter);
if (itOuter != MyMap.end())
{
// Key present in outer map.
// Repeat find in inner map.
auto innerMapPtr = itOuter->second;
const DWORD keyInner = 20;
auto itInner = innerMapPtr->find(keyInner);
if (itInner != innerMapPtr->end())
{
IDLL::CClass * classPtr = itInner->second;
std::cout << classPtr->n << '\n';
}
}
}
相关问题
- 1. 使用std :: map与指针
- 2. 指向std :: map的指针
- 3. 都使用const指针或指针作为'的std ::关键map`
- 4. 使用boost :: assign与嵌套在std :: map中的std :: set
- 5. 问题与嵌套std :: map的输出
- 6. 使用深度嵌套的指针
- 7. C++ std :: map字符串指针
- 8. C指针嵌套
- 9. 用std :: pairs数组初始化std :: map问题(指针错误?)
- 10. 在std :: map中使用boost智能指针
- 11. 使用指针类型作为键访问std :: map
- 12. 使用Index运算符插入一个指向std :: map的指针的元素
- 13. 使用std :: unary_function清除std :: vector指针
- 14. 在std :: map中存储指向派生类实例的指针
- 15. 包装std :: map并提供指向元素的指针
- 16. 如何在std :: map中获取指向一对的指针
- 17. 指针嵌套结构
- 18. 解析和嵌套指针
- 19. 指针到嵌套结构
- 20. std :: unique_ptr和指针指针
- 21. 指针指向嵌套结构
- 22. 嵌套结构和指针用C
- 23. 仅使用基本指针的std :: map的派生类型的迭代
- 24. 的std ::指针上
- 25. 我应该使用指针的std :: string
- 26. 使函数指针std :: min与std :: initializer_list
- 27. 在嵌套数据框中使用`map()`
- 28. 带功能指针的std :: map自动填充
- 29. 如何从外部开始循环嵌套的std :: map?
- 30. 使用std :: string作为std :: map的键