在c ++中复制函数参数

时间:2012-07-24 18:08:48

标签: c++

我正在读这本名为“加速c ++”的书。对于“复制”,如下所示

// error - no element at ret.end() 
copy(bottom.begin(), bottom.end(), ret.end());

书中提到使用ret.end()作为第三个参数并不安静。但是ret.end()返回一个超过'ret'容器的最后一个元素的迭代器。什么是这个论点有问题吗?他们建议改用'back_inserter(ret)'。为什么会这样?

1 个答案:

答案 0 :(得分:8)

ret.end的问题在于,尽管它指向容器末尾的一个,但在内存中可能没有在该位置或之外分配任何内容。由于写入尚未分配给程序的内存位置是未定义的行为,因此您应该使用back_inserter