c++ - 如何使用C++ Boost库中的for_each?

标签 c++ boost compilation foreach

我尝试使用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。不适用于std::vector

您需要的for_each来自Boost.Range库。

#include <boost/range/algorithm/for_each.hpp> //note this difference!

boost::for_each(vec, your-lambda-expression);

它在boost::range命名空间内定义,并使用boost声明式带入using命名空间。所以你也可以这样写:
boost::range::for_each(vec, your-lambda-expression);

关于c++ - 如何使用C++ Boost库中的for_each?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527999/

相关文章:

c++ - 如何以 boost spirit 允许好的空间并禁止坏的空间

编译一个文件,就好像它的内容在指定的包中一样

scala - 程序在使用 scala 运行时可以正常工作,但在尝试使用 scalac 编译时出现编译错误

c++ - 关于dup2和多线程的问题

C++从主线程结束分离线程

c++ - 关于 C++ 中命名空间的极其基本的问题

c++ - 字符串常量之前的预期标识符

c++ - 返回不同类型变量的单个 get 方法

c++ - 使用 boostspirit 解析 html 转义序列

css - LESS.js 编译了 css 但没有应用它?