C ++列表:复制成员列表中的本地列表

时间:2013-12-09 19:01:18

标签: c++ list methods std member

在方法中,我有一个局部变量

std::list<proiezione> ora;    

和相同类型的成员变量

std::list<proiezione> orb;   

在我的方法中我有

for (std::list<proiezione>::iterator it = ora.begin(); it != ora.end(); ++it)
    this->orb.push_back(*it);

但不起作用!

this-&gt; mem是空的!为什么呢?

精确地:

class CMFCApplication4Doc : public CDocument
{
public:
std::map<CString, Esame> esami;
INT valore_lode;
proiezione pr;
std::list<proiezione> orb;
    void get_proiezione(FLOAT media_desiderata);
}

void CMFCApplication4Doc::get_proiezione(FLOAT   media_desiderata)
{
    std::list<proiezione> ora;
std::vector<CString> v_proiezione;
CString appoggio;
std::map<CString, Esame> es = esami;
calcola_proiezione(ora,&pr, es, media_desiderata,valore_lode);
for (std::list<proiezione>::iterator it = ora.begin(); it != ora.end(); ++it)
    this->orb.push_back(*it);
 ecc ecc (I don't touch orb anymore)

} 

在调试模式下,我有“ora”有25个元素,但是“this-&gt; orb”有零元素!

1 个答案:

答案 0 :(得分:1)

为什么不使用std::copy算法?

std::copy(tList.begin(), tList.end(), std::back_inserter(mem));

或使用copy-swap:

void MyClass::func(std::list<proiezione> tList)
{
    mem.swap(tList);
}

或使用assign成员:

mem.assign(tList.begin(), tList.end());

或使用复制赋值运算符:

mem = tList;

如果没有看到更多代码,就很难告诉你为什么它是空的。

几乎忘记了(感谢凯西提醒我):or实际上是一个保留字,所以你要将你的变量命名为别的。