如何对这两个结构的容器进行赋值
怎么对这两个结构的容器进行赋值
现在怎么将fvec容器中的数依次赋值给costcopy并且相应的index为其赋值顺序
比如上述代码,costcopy中处理后的value依次为20,90,25,23;index依次为0,1,2,3,
求解赋值方法
------解决方案--------------------
首先,建议给copy换个名字
然后,建议给copy添加一个构造函数,否则必须单独定义一个copy变量才能加进容器内,如果有构造函数就可以在push_back内构造甚至直接emplace_back添加进去
如果是gcc编译器,倒是可以直接这样
for (size_t i=0; i<fvec.size(); i++)
costcopy.push_back({i,fvec[i]});
------解决方案--------------------
如果你可以修改copy,用2楼的
如果不可以
struct copy
{
int index;
float value;
}
vector<float> fvec;
vector<copy> costcopy;
fvec.push_back(20);
fvec.push_back(90);
fvec.push_back(25);
fvec.push_back(23);
现在怎么将fvec容器中的数依次赋值给costcopy并且相应的index为其赋值顺序
比如上述代码,costcopy中处理后的value依次为20,90,25,23;index依次为0,1,2,3,
求解赋值方法
------解决方案--------------------
首先,建议给copy换个名字
然后,建议给copy添加一个构造函数,否则必须单独定义一个copy变量才能加进容器内,如果有构造函数就可以在push_back内构造甚至直接emplace_back添加进去
如果是gcc编译器,倒是可以直接这样
for (size_t i=0; i<fvec.size(); i++)
costcopy.push_back({i,fvec[i]});
struct copy
{
int index;
float value;
copy(int _i, float _v):index(_i),value(_v)
{}
};
for (size_t i=0; i<fvec.size(); i++)
costcopy.push_back(copy(i,fvec[i]));
// costcopy.emplace_back(i,fvec[i]); //c++11
------解决方案--------------------
如果你可以修改copy,用2楼的
如果不可以
for (size_t i=0; i<fvec.size(); i++)
{
copy tmp = {i,fvec[i]};
costcopy.push_back(tmp);
}