几种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的代码。
有任何参考资料吗?
答案 0 :(得分:4)
所有算法都没有一般答案。对于set_difference
,您可以从C ++ 11 25.4.5.4/2中学到:
Requires: The resulting range shall not overlap with either of the original ranges.
这似乎使你的代码未定义的行为似乎做你想要的。
在确定要使用的迭代器范围之前,您只需要查看特定算法的要求。