设定差异的输出可以存储在第一个输入吗? [英] Can output of set difference be stored in first input?

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

问题描述

如果我有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]


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

Requires: The resulting range shall not overlap with either of the original ranges.

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

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

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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆