【发布时间】:2014-01-18 15:57:10
【问题描述】:
在我的课堂上我有这样的soundmap
class SoundSubSystem
{
private:
boost::unordered_map<string, ISoundEngine*> soundmap;
....
};
但是如何使用BOOST_FOREACH 遍历它呢?
SoundSubSystem::~SoundSubSystem()
{
BOOST_FOREACH(/*?*/ item, soundmap) {
item.second->drop();
}
};
item 应该有什么值类型?
【问题讨论】:
-
作为建议,考虑将编译器升级到提供 C++11 支持的版本,并使用基于范围的
for循环:for (auto& item : soundmap) { item.second->drop(); }。 -
我正在使用 Visual Studio 2010 - 据我所知它不支持 c++11
-
确实它不支持 C++11 的基于范围的
for循环,但它确实支持auto。所以你可以这样做:BOOST_FOREACH(auto& item, soundmap) { item.second->drop(); }. -
我明白了。是的!它有效!