/ / Come usare for_each dalla libreria boost di C ++? - c ++, boost, compilation, foreach

Come usare for_each dalla libreria boost C ++? - c ++, boost, compilation, foreach

Provo ad usare per ciascuno dalla libreria boost C ++. Questo è il codice che ho.

#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;
}

Ecco come compilo il mio codice:

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

Di conseguenza ottengo:

error: ‘for_each’ is not a member of ‘boost’

Qualcuno sa perché non funziona?

risposte:

8 per risposta № 1

Stai usando for_each da Boost.Fusion Library. Questo non funziona std::vector.

Il for_each di cui hai bisogno è da Boost.Range Library.

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

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

È definito all'interno boost::range spazio dei nomi, che è portato a boost namespace usando using dichiarativo. Quindi puoi anche scrivere questo:

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