可以在第一次输入中存储设定差值的输出吗?

时间:2014-01-17 17:02:10

标签: c++ c++11 stl

如果我有2个向量(或deques):

我可以将他们的set_difference存储在第一个向量中吗?

来自cpp wiki的Aka示例:

std::vector<int> v1 {1, 2, 5, 5, 5, 9};
std::vector<int> v2 {2, 5, 7};
std::vector<int> diff;

std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), 
                    std::inserter(diff, diff.begin()));

如果改为:

,它会起作用吗?
std::vector<int> v1 {1, 2, 5, 5, 5, 9};
std::vector<int> v2 {2, 5, 7};

std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), 
                    v1.begin());

首先输入我的意思是第一个向量,是的我知道STL适用于范围而不是容器。

1 个答案:

答案 0 :(得分:4)

来自N3797,§25.4.5.4/ 2 [set.difference]

  

要求:结果范围不得与任何一个原始范围重叠。

因此,如果您尝试将结果写入任一输入范围,则行为将是未定义的。