[英]C++ Vector Loop and push_back problem?
當我嘗試修改向量數組時,我無法弄清楚出了什么問題。 這是我的向量數組:
14248 DL AAAAA
14248 DL AAAAA
14248 DL AAAAA
14248 DL AAAAA
14248
14248
14248
14248
我想在這里嘗試做的是,如果向量字符串包含“AAAAA”,我將作為“-”推回不同的向量 cRntiModDash。 如果不是“AAAAA”,那么我會推回原始字符串。
因此,修改后應包含 cRntiModDash 向量:
-
-
-
-
-
14248
14248
14248
14248
14248
這就是我想要的,但是當我全部推回多向量時,出現問題並導致退出。
std::vector<std::vector<string>*> all;
vector<std::string> cRntiModDash;
for (vector < string >::iterator ct(cRnti.begin()); ct != cRnti.end(); ct++)
{
std::string cRntTmp (*ct);
if (cRntTmp.find("AAAAA") != string::npos)
cRntiModDash.push_back("-");
else
cRntiModDash.push_back(*ct);
}
}
all.push_back(&cRntiModDash);
for (unsigned int j = 0; j < cRnti.size(); j++)
{
for (std::vector<std::vector<string>*>::iterator i = all.begin(); i != all.end(); i++)
{
if (i != all.begin())
{
CSVToFile << ",";
std::cout<< ",";
}
std::cout<< (**i)[j];
CSVToFile <<(**i)[j];
}
std::cout<< std::endl;
CSVToFile << std::endl;
}
CSVToFile.close();
如果我不修改vector cRnti,那就可以了。 我檢查了我修改后的向量沒有任何空格。 如果有人能認識到我的問題,我真的很感激。 我已經嘗試了一段時間,但看不到問題所在。 提前致謝。
vector<std::string> cRntiModDash;
// ...
all.push_back(&cRntiModDash);
您將指向(可能)局部變量cRntiModDash
的指針存儲在all
中。 一旦cRntiModDash
離開 scope, all
將包含一個指向不再有效的 object 的指針。 memory 位置將被其他變量重用,當您稍后嘗試訪問all
向量時,可能會發生任何事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.