【发布时间】:2014-03-18 13:38:51
【问题描述】:
我试图通过map<int, int>element 编写一个简单的循环,我想知道为什么我使用的第一个语法不起作用/编译?
我写的第一个版本如下,它不能与 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)
{
}
【问题讨论】:
-
您是否考虑过使用 C++11 auto 代替? en.cppreference.com/w/cpp/language/range-for 和 stackoverflow.com/q/17032267/2436175
标签: c++ boost boost-foreach