首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何对这两个结构的容器进行赋值

2013-03-17 
怎么对这两个结构的容器进行赋值struct copy{int indexfloat value}vectorfloat fvecvectorcopy co

怎么对这两个结构的容器进行赋值


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

[解决办法]
引用:
我用的是VC6.0求具体可以执行的代码,谢谢了

如果你可以修改copy,用2楼的
如果不可以
    for (size_t i=0; i<fvec.size(); i++)
    {
        copy tmp = {i,fvec[i]};
        costcopy.push_back(tmp);
    }

热点排行