使用C ++ <algorithm>算法</algorithm>

时间:2013-11-14 16:59:29

标签: c++ stl-algorithm

几种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的代码。

有任何参考资料吗?

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.这似乎使你的代码未定义的行为似乎做你想要的。

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