【发布时间】:2013-01-17 09:08:59
【问题描述】:
我正在尝试使用与v 中相同的值创建vector<Wrap>。我试过下面的组合,没有用!
using namespace std;
struct Wrap
{
int data;
//Other members
};
int main()
{
int a[10] = {2345,6345,3,243,24,234};
vector<int> v(&a[0],&a[10]);
Wrap w;
//Populate other members of w
vector<Wrap> vw;
using namespace boost::lambda;
//transform(v.begin(),v.end(), back_inserter(vw), (bind(&Wrap::data,&w,_1), boost::lambda::constant(w)));
//transform(v.begin(),v.end(), back_inserter(vw), bind(&Wrap::data,&w,_1), boost::lambda::constant(w));
//transform(v.begin(),v.end(), back_inserter(vw), ((w.data = _1), boost::lambda::constant(w)));
//transform(v.begin(),v.end(), back_inserter(vw), ((w.data = _1), w));
cout << vw.size() << endl;
BOOST_FOREACH(Wrap w, vw)
{
cout << w.data << endl;
}
}
注意:目前还不能使用 C++11
更新 任何适用于 C++03 的干净解决方案都可以。不需要使用 boost lambda
【问题讨论】:
-
这是一个 XY 问题吗?您的目标是创建
vector<Wrap>还是让boost::lambda工作? -
创建一个
vector<Wrap>。
标签: c++ boost c++03 boost-lambda