函数形式:BOOST_FOREACH(type name, container);
用于遍历容器里面的内容,但是如果遇到map等里面自带逗号的数据结构时,就会有问题。
比如 std::vector<std::map<std::string, std::string>> container;
如果你直接这样遍历,编译器是无法通过的(可能是2008的BUG)
BOOST_FOREACH(std::map<std::string, std::string>& tmp, container)
{
}
编译器会提示这个函数参数不正确的一系列的提示,其实就是把map里面的[,]当做函数参数的分割符了,怎么解呢?这样写:
#define std::map<std::string, std::string> STDMAP;
BOOST_FOREACH(STDMAP& tmp, container)
{
}
这样写就没问题了,奇葩的编译器... OVER
原文地址:https://blog.51cto.com/11753138/2412591
时间: 2024-09-21 18:08:34