【发布时间】:2014-05-30 14:44:47
【问题描述】:
我正在使用的程序的一部分需要将字符串值附加到向量。当像这样附加字符串值时,我遇到了分段错误:
for(int i = 0; i < testvec.size(); i++) {
testvec[i] = oldvec[i];
}
但我的程序使用此代码正确编译和执行:
for(int i = 0; i < testvec.size(); i++) {
testvec.push_back(i);
}
这就是它的要点,我们所做的是更新一个向量
【问题讨论】:
-
第二个循环要么不做任何事情(如果
testvec.size() == 0),要么直到程序最终耗尽内存(否则)才终止。只要oldvec.size() >= testvec.size(),第一个循环就可以(但实际上并不附加任何内容),否则会表现出未定义的行为。无论如何,我不清楚这两段代码到底应该实现什么。 -
要将一个向量的内容附加到另一个向量的末尾,请写
testvec.insert(testvec.end(), oldvec.begin(), oldvec.end());。不需要循环。 -
问题是什么?