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



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

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);

但不起作用!

这个->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)
} 

在调试模式下,我有25个元素的"ora",但"this->orb"没有元素!

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

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

或者使用副本交换:

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

或者使用assign成员:

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

或者使用复制分配运算符:

mem = tList;

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

差点忘了(感谢Casey提醒我):or实际上是一个保留字,所以你会想用其他东西来命名你的变量。

最新更新