C++算法的就地使用 <algorithm>
In place usage of C++ <algorithm> algorithms
几种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.
这似乎使您的代码未定义的行为似乎可以满足您的需求。
在决定使用哪些迭代器范围之前,只需查看特定算法的要求。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- C++ <algorithm> 使用对象作为比较定义的 sort()
- TicTacToe with MiniMax algorithm 4x4
- 为什么 std::erase(std::erase_if) 不是适用于<algorithm>任何容器的模板?
- is_permutation方法从 #include<algorithm> 显示错误的输出
- 设置::查找和查找之间的性能差异<algorithm>
- 如何显式调用运算符<<
- Stringholics algorithm
- Next_Permutation algorithm
- 模板操作员&lt;未打电话
- C / CUDA中的模板方法是3个角括号(&lt;&lt;&lt;)
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 错误:调用"std::vector<:vector<int>>::p ush_back(std::vector<std::__cxx11::basic_string<
- 我不使用<algorithm>标题,但 sort() 可用
- std::max在包含<algorithm>后无法解析
- C 建造者Clang STD :: Sill,找不到超载的操作员&lt;
- 为什么STD :: MAP需要操作员&lt;以及我如何写一个