本文介绍了设定差异的输出可以存储在第一个输入吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

if I have 2 vectors(or deques):

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

can I store their set_difference in first vector?

Aka这个例子来自cpp wiki参考:

Aka this example from cpp wiki reference:

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工程范围,而不是容器。

note by first input I mean first vector, and yes I know STL works on ranges, not on containers.

推荐答案

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

From N3797, §25.4.5.4/2 [set.difference]

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

So the behavior would be undefined if you tried to write the result to either of the input ranges.

这篇关于设定差异的输出可以存储在第一个输入吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 23:52