问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++ stl::set的操作

发布网友 发布时间:2022-05-06 14:15

我来回答

4个回答

懂视网 时间:2022-05-06 18:37

Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All 两个要联合的SQL语句 字段个数必须一样,而且字段类型要相容(一致); 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union

Union因为要进行重复值扫描,所以效率低。如果合并没有刻意要删除重复行,那么就使用Union All

两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。

union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。


Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式。

例如:
建两张表:s1,s2
create table s1
(
id number(10),
name varchar2(20),
age number(10)
)

create table s2
(
id number(10),
name varchar2(20),
age number(10)
)

插入数据:
insert into s1 values(1,'刘备',51);
insert into s1 values(1,'刘德华',54);
insert into s1 values(3,' 张学友',54);
insert into s1 values(4,'黎明',54);

insert into s2 values(1,'刘备',51);
insert into s2 values(3,' 张飞',52);
insert into s2 values(4,'关羽',53);

1、Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
select * from s1
union
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘备 51
2 1 刘德华 54
3 3 张飞 52
4 3 张学友 54
5 4 关羽 53
6 4 黎明 54

2、Union All:对两个结果集进行并集操作,包括重复行,不进行排序;
select * from s1
union all
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘备 51
2 1 刘德华 54
3 3 张学友 54
4 4 黎明 54
5 1 刘备 51
6 3 张飞 52
7 4 关羽 53

3、Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
select * from s1
Intersect
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘备 51

4、Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。
select * from s1
Minus
select * from s2;

得到结果集:

ID NAME AGE
1 1 刘德华 54
2 3 张学友 54
3 4 黎明 54

热心网友 时间:2022-05-06 15:45

用algorithm里面的set_union和set_intersection。给你个例子:

#include <iostream>
#include <set>
#include <algorithm>
#include <iterator>  

using namespace std;

int main(int argc, char** argv) 
{
    int a[] = {10,20,30,40,50};
    int b[] = {20,50,60};
    
    set<int> first (a,a+sizeof(a)/sizeof(a[0]));
    set<int> second (b,b+sizeof(b)/sizeof(b[0]));
    set<int> result;
    
    set_intersection (first.begin(), first.end(), second.begin(), second.end(),
                      insert_iterator<set<int> >(result, result.begin() ) );
    
    
    copy(result.begin(), result.end(), ostream_iterator<int>(cout, " "));
    
    return 0;
}

输出(交集):

20 50

热心网友 时间:2022-05-06 17:03

#include <algorithm >追问忘了STL除了容器还包括算法……
函数的原型是什么样的?

热心网友 时间:2022-05-06 18:37

额度vfgedrfgretgtvr
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
社会消费品零售总额反映什么问题社会消费品零售总额反映什么 我的头发发质很软 不想每天做头发 是烫发根还是怎么 就能让头发蓬起来... ...的时候如果想让软化完头顶的头发能蓬起来一些,应该可以做到吧?那... 我拿建设银行卡在邮政夸行转给农业银行可不可以 ...银行卡在自助取款机上可不可以跨行转账到农业银行卡上。可以的话手 ... 邮政银行卡转农业银行卡帐号怎么转(在自动取款上转) 邮政卡自助取款机内给外省农业银行卡转账需要多久到账 请问广州D1857在广州哪个站 薄壁不锈钢管什么型号的氩弧焊机能焊 韶关常年平均温度是多少 室内装修报价中增项是什么意思? 雷凌仪表盘eco绿灯不亮了2014的第一款式雷凌仪表上的eco灯不亮 置业讲堂:买房贷款手续及流程? 装修中常见的增项有哪些 商业贷款转公积金贷款的流程及要求 18款雷凌Eco灯不亮怎么回事 旭鹰eco灯匀速行驶一会亮一会不亮 2013款别克新凯越eco灯不亮了怎么调 丰田霸道eco灯不亮了什么原因 雷凌的ECO不亮了怎么回事? 别克凯越仪表盘上的eco怎不亮了是点回事? 装修合同中的增项,到底是什么意思呢? 二十四节气入选非遗五周年,二十四节气是如何规定的? 设计费增项怎么写 我们在办医疗器械二类证增项说要仓储情况说明不知道该怎么写,急急急 增加工程量情况说明要这么写啊 具体点 央视公益广告二十四节气词 农历二十四节气已经踏上申遗之路,请你为此活动写一则关于二十四节气的宣传语,要求至少使用一种修辞方 写广告】请你结合本次申遗的成功,拟写一则宣传“二十四节气”的公益广告语 怎么发手机定位给朋友 巡鹰60几码eco灯灭了 雅马哈巧格i125eco灯不亮了 卡罗拉ECO灯不亮,是什么原因? 正常装修增项包括哪些内容? 车仪表盘ECO不亮是什么原因 如何看待装修公司装修期间的增项问题? 二级建造师增项有什么好处 15年现代瑞纳自动档ECO正常行驶灯不亮是什么故障? 丰田威驰eco灯不亮了怎么才能开启 17年1.6卡罗拉今天开车要停车突然ECO灯不亮了什么原因? 丰田卡罗拉保养之后eco指示灯不亮了? 汽车ECO灯不亮了? 丰田锐志保养后eco不亮了,怎么回事 商业住房贷款可以换银行吗?据说不能转成公积金贷款。 死神嗅盐的作用 天然气用完后要不要关阀门 嗅盐是禁药嘛? 健身溴盐对身体有害吗 嗅盐对长跑有帮助吗? 死神嗅盐是什么东西