我正在阅读这本名为 accelerated c++ 的书。对于如下所示的“复制”
// error - no element at ret.end()
copy(bottom.begin(), bottom.end(), ret.end());
书中提到,使用ret.end()作为第三个参数是不正确的。但是ret.end()返回的是'ret'容器最后一个元素的迭代器。什么是这个论点有什么问题吗?他们建议改用“back_inserter(ret)”。为什么会这样?
最佳答案
ret.end
的问题在于,尽管它指向容器末尾之后的一个,但在内存中的该位置或之后可能没有分配任何内容。由于写入尚未分配给您的程序的内存位置是未定义的行为,因此您确实应该使用 back_inserter
。
关于c++ - 在 C++ 中复制函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11636777/