Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制c+中的函数参数+; 我正在读这本书,叫做加速C++。对于下面的拷贝, // error - no element at ret.end() copy(bottom.begin(), bottom.end(), ret.end());_C++ - Fatal编程技术网

复制c+中的函数参数+; 我正在读这本书,叫做加速C++。对于下面的拷贝, // error - no element at ret.end() copy(bottom.begin(), bottom.end(), 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是容器末尾具有随机访问迭代器

书中提到使用ret.end()作为第三个参数是不对的。但是ret.end()返回的迭代器超过了“ret”容器的最后一个元素。这个参数有什么问题?他们建议使用“back\u inserter(ret)”'相反。为什么会这样?

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

@0A0D迭代器减法仅适用于双向迭代器。@0A0D是容器末尾具有随机访问迭代器的单个元素。副本可能需要更多的元素。@HansZ:明白,但这不是问题,对吗?副本被告知在何处插入元素,这就是为什么从我收集的内容中需要一个
back\u inserter