我尝试编写一个简单的循环遍历map<int, int>
元素,我想知道为什么我使用的第一种语法不起作用/无法编译?
我编写的第一个版本如下,在VS'2008 / boost版本1.44中无法编译:
std::map<int, int> myMap;
...
BOOST_FOREACH(map<int, int>::value_type &p, myMap)
{
}
现在,如果我像下面这样重新编写代码,编译就没问题了,但为什么呢?
typedef std::map<int, int> myMap_t;
myMap_t myMap;
...
BOOST_FOREACH(myMap_t::value_type &p, myMap)
{
}