我有一些看起来像这样的代码:
typedef tuple<int, int, double> DataPoint;
vector<DataPoint> data;
vector<double> third_column_only;
// Code to read in data goes here.
transform(data.begin(), data.end(), back_inserter(values), tuples::get<1, DataPoint>);
不幸的是,最后一行没有编译 - 它给了我这样的消息:
/path/to/boost/tuple/detail/tuple_basic.hpp:在 `boost::tuples::cons' 的实例化中: /path/to/boost/tuple/detail/tuple_basic.hpp:144:从 `boost::tuples::element >' 实例化 program.cc:33:从这里实例化 /path/to/boost/tuple/detail/tuple_basic.hpp:329:错误:`boost::tuples::cons::tail' 类型不完整 /path/to/boost/tuple/detail/tuple_basic.hpp:329:错误:模板类型参数的使用无效 /path/to/boost/tuple/detail/tuple_basic.hpp:151:被早期的错误弄糊涂了
基本上,要使用 Python 的 operator.itemgetter 函数,我想做这样的事情:
transform(data.begin(), data.end(), back_inserter(values), itemgetter(2))
如何使用 Boost 做到这一点?