1

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’

なぜ機能しないのか誰にもわかりませんか?

4

1 に答える 1

10

for_eachBoost.Fusion ライブラリから使用しています。では動作しませんstd::vector

for_each必要なものは Boost.Range Library からのものです。

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

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

宣言を使用して名前空間boost::rangeに持ち込まれる名前空間内で定義されます。したがって、次のように書くこともできます。boostusing

boost::range::for_each(vec, your-lambda-expression);
于 2013-03-20T15:45:00.497 に答える