C++算法的就地使用 <algorithm>

In place usage of C++ <algorithm> algorithms

本文关键字:lt algorithm gt 算法 C++      更新时间:2023-10-16

几种STL算法具有一般形式:

Algorithm(InputIterator first1, InputIterator last1, OutputIterator result,...)

Algorithm(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result,...)

我的问题是 - OutputIterator result什么时候可以在(first1,last1)(first2,last2)范围内?

对于transform我在这里找到的答案:http://www.cplusplus.com/reference/algorithm/transform/

但是还有其他多个可能有意义的,例如 从理论上讲,set_difference对于这种用法应该是安全的,并且它可以在GCC 4.7.1的代码中使用。

有什么参考资料吗?

没有适用于所有算法的通用答案。对于set_difference,您可以从 C++11 25.4.5.4/2 中了解到:

Requires: The resulting range shall not overlap with either of the original ranges. 这似乎使您的代码未定义的行为似乎可以满足您的需求。

在决定使用哪些迭代器范围之前,只需查看特定算法的要求。