Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C++;_C++_For Loop_Stdmap - Fatal编程技术网

C++ 如何在C++;

C++ 如何在C++;,c++,for-loop,stdmap,C++,For Loop,Stdmap,我似乎无法遍历静态映射,也似乎找不到对此的问题。也许我做错了,不管地图是静态的还是非静态的,但它在这里 我有一个静态映射=static std::map*s_textureMap (纹理只是我制作的自定义类) 我尝试了两种不同的循环: for (auto it = s_textureMap.begin(); it != s_textureMap.end(); it++) { std::cout << it->first // string (key)

我似乎无法遍历静态映射,也似乎找不到对此的问题。也许我做错了,不管地图是静态的还是非静态的,但它在这里

我有一个静态映射=
static std::map*s_textureMap
(纹理只是我制作的自定义类)

我尝试了两种不同的循环:

for (auto it = s_textureMap.begin(); it != s_textureMap.end(); it++)
    {
        std::cout << it->first  // string (key)
    }
for(auto it=s_textureMap.begin();it!=s_textureMap.end();it++)
{
std::cout first//string(键)
}

for(自动常量&str:m_程序映射)
{
std::cout first//string(键)
}
对于第一个循环,我收到错误消息说“在应用程序的最开始初始化映射”和“表达式必须具有类类型”

对于第二个循环,我收到错误消息,说“在应用程序的最开始初始化映射”和“这个基于范围的'For'语句需要一个合适的“begin”函数,但没有找到

我试图查找这些错误,但似乎帮不了我


提前感谢!

您拥有的不是静态映射,而是指向映射的静态指针。因此,您需要使用
->
取消引用运算符,而不是

for (auto it = s_textureMap->begin(); it != s_textureMap->end(); it++)
{
    std::cout << it->first;  // string (key)
}

我不知道这是否是您想要做的,但是您的静态映射被声明为指针,我尝试使用类似于static
std::map s_textureMap;
的东西,它工作得很好


或者,您也可以执行
s\u textureMap->begin()
而不是
s\u textureMap.begin()
,再次假设您确实想要使用静态指针。

如果您有一个指向映射的指针,您必须取消引用您没有执行的指针…请检查声明。静态变量应该在初始位置初始化。我认为这是遗漏的。
for (auto it = s_textureMap->begin(); it != s_textureMap->end(); it++)
{
    std::cout << it->first;  // string (key)
}
for (auto const& str : *m_programMap)
{
    std::cout << it->first;  // string (key)
}