Foreach通过包含c ++指针的向量

1 c++ dictionary iterator for-loop vector

我做了一个地图,里面装满了这样的矢量:

std::map<int, std::vector<CClass*>> pointers = getMap();
Run Code Online (Sandbox Code Playgroud)

现在我想通过地图的每个插槽,也可以浏览存储在地图中的矢量的每个插槽.

这是它如何通过地图:

for (std::map<int, std::vector<CClass*>>::iterator it = pointers.begin(); it != pointers.end(); it++) 
Run Code Online (Sandbox Code Playgroud)

这很好用,它就像我想要的那样遍历每个对象.

但现在我想通过向量中的每个插槽,我尝试这样:

for (std::vector<CClass*>::iterator playerIt = it->second.begin(); playerIt != it->second.end(); playerIt++) 
Run Code Online (Sandbox Code Playgroud)

如果我想访问存储在其中的值,编译器会给我这个错误:

file.cpp(552) : error C2839: Ungültiger Rückgabetyp 'CClass **' für überladenen Operator '->'
Run Code Online (Sandbox Code Playgroud)

这意味着"超重运营商'无效的返回类型'CClass**' - >'

问候

Cor*_*mer 7

您可以在C++ 11中使用基于范围的for循环来更可读地处理它

for (auto& element : pointers)
{
    for (auto& player : element.second)
    {
        // player will be a CClass* that you can use
        std::string name = player->GetName();  // For example
    }
}
Run Code Online (Sandbox Code Playgroud)