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)
}
我不知道这是否是您想要做的,但是您的静态映射被声明为指针,我尝试使用类似于staticstd::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)
}