几种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.
这似乎使您的代码未定义的行为似乎可以满足您的需求。
在决定使用哪些迭代器范围之前,只需查看特定算法的要求。