c++ - 就地使用 C++ <algorithm> 算法

标签 c++ stl-algorithm

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

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

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

我的问题是 - OutputIterator 结果 何时可以在 (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 中了解到:

要求:结果范围不得与任何一个原始范围重叠。这似乎使您的代码出现未定义的行为,似乎可以执行您想要的操作。

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

关于c++ - 就地使用 C++ <algorithm> 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983735/

相关文章:

c++ - 如何更好地使用 STL 和仿函数来获得滑动窗口最小值的解决方案

c++ - std::copy n 个元素或到最后

c++ - 使用 map 内存

c++ - 指向 D3D11device vtable 的正确指针

c++ - 访问冲突写入位置 0xCCCCCCCC 创建二维数组

c++ - 使用 STL 算法查找集合中的前两个不相邻元素

c++ - 返回 vector 对象的引用,好主意吗?

c++ - astyle 可以处理不同的数组初始化大括号吗?

c++ - 为什么有些 STL 算法提供额外的 '_if' 函数而不是重载?