复制c+中的函数参数+; 我正在读这本书,叫做加速C++。对于下面的拷贝, // error - no element at ret.end() copy(bottom.begin(), bottom.end(), ret.end());
书中提到使用ret.end()作为第三个参数是不对的。但是ret.end()返回的迭代器超过了“ret”容器的最后一个元素。这个参数有什么问题?他们建议使用“back\u inserter(ret)”'相反。为什么会这样?ret.end的问题是,尽管它指向容器末尾的一个,但在内存中该位置或该位置之外可能没有分配任何内容。由于写入尚未分配给您的程序的内存位置是未定义的行为,因此您确实应该使用复制c+中的函数参数+; 我正在读这本书,叫做加速C++。对于下面的拷贝, // error - no element at ret.end() copy(bottom.begin(), bottom.end(), ret.end());,c++,C++,书中提到使用ret.end()作为第三个参数是不对的。但是ret.end()返回的迭代器超过了“ret”容器的最后一个元素。这个参数有什么问题?他们建议使用“back\u inserter(ret)”'相反。为什么会这样?ret.end的问题是,尽管它指向容器末尾的一个,但在内存中该位置或该位置之外可能没有分配任何内容。由于写入尚未分配给您的程序的内存位置是未定义的行为,因此您确实应该使用back\u inserter@0A0D迭代器减法仅适用于双向迭代器。@0A0D是容器末尾具有随机访问迭代器
back\u inserter
@0A0D迭代器减法仅适用于双向迭代器。@0A0D是容器末尾具有随机访问迭代器的单个元素。副本可能需要更多的元素。@HansZ:明白,但这不是问题,对吗?副本被告知在何处插入元素,这就是为什么从我收集的内容中需要一个back\u inserter
。