【发布时间】:2013-03-20 15:34:54
【问题描述】:
我尝试使用 C++ boost 库中的for_each。这是我的代码。
#include <iostream>
#include <vector>
#include <boost/fusion/algorithm/iteration/for_each.hpp>
#include <boost/fusion/include/for_each.hpp>
using namespace std;
int main() {
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
boost::for_each(
vec,
[](int val){
cout << val << "\n";
}
);
return 0;
}
这就是我编译代码的方式:
g++ -std=c++0x -I /opt/software/boost/1.50_ubuntu12.4lts_gcc4.7.2/include -c try_boost.cpp
g++ -o try_boost -L/opt/software/boost/1.50_ubuntu12.4lts_gcc4.7.2/lib try_boost.o -lboost
结果我得到:
error: ‘for_each’ is not a member of ‘boost’
有人知道为什么它不起作用吗?
【问题讨论】:
-
试试
boost::fusion::for_each。我不使用它,所以我不确定。 -
@chris:那也行不通。
-
您使用的这个
for_each不适用于std::vector。这适用于 Fusion Library 中的类似元组的 boost::vector。 -
(Nawaz 提到的问题的可能解决方案:改用
std::for_each(vec.begin(), vec.end(), [](...){...})。) -
另外,你为什么不用
std::for_each?
标签: c++ boost compilation foreach