stl merge函数使用

stl merge函数使用merge函数的作用是:将两个已经排好序的序列合并为一个有序的序列。函数参数:merge(first1,last1,first2,last2,result,compare);firs1t为第一个容器的首迭代器,last1为第一个容器的末迭代器;first2为第二个容器的首迭代器,last2为容器的末迭代器;result为存放结果的容器,comapre为比较函数(可略写,默认为合并为…

大家好,又见面了,我是你们的朋友全栈君。

merge函数的作用是:将两个已经排好序的序列合并为一个有序的序列。

函数参数:merge(first1,last1,first2,last2,result,compare);

firs1t为第一个容器的首迭代器,last1为第一个容器的末迭代器;

first2为第二个容器的首迭代器,last2为容器的末迭代器;

result为存放结果的容器,comapre为比较函数(可略写,默认为合并为一个升序序列)。

注意

使用的时候result,如果用的vector,必须先resize一下,比如:(注意到此时a和b都已经是有序的啦!)

默认升序:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
#include<stack>
#include<cmath>
#include<set>
#include<map>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef pair<int,int>P;
const int INF=0x3f3f3f3f;
const int N=100005;
vector<int>a,b,c;

int main(){
    a.push_back(1);
    a.push_back(3);
    a.push_back(5);
    a.push_back(7);

    b.push_back(2);
    b.push_back(4);
    b.push_back(6);
    b.push_back(8);
    c.resize(8);
    merge(a.begin(),a.end(),b.begin(),b.end(),c.begin());
    for(int i=0;i<c.size();i++){
        printf("%d ",c[i]);
    }
    printf("\n");
}

运行结果:

stl merge函数使用

若a,b数组不是有序的,则出来的结果是错的哦!

自定义排序规则

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
#include<stack>
#include<cmath>
#include<set>
#include<map>
using namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef pair<int,int>P;
const int INF=0x3f3f3f3f;
const int N=100005;


struct A{
    int x,y;
};
vector<A>a,b,c;
bool cmp(A a,A b){
    return a.x<b.x;
}
int main(){
    a.push_back({1,9});
    a.push_back({3,8});
    a.push_back({5,7});

    b.push_back({2,1});
    b.push_back({4,2});
    b.push_back({6,4});
    c.resize(6);
    merge(a.begin(),a.end(),b.begin(),b.end(),c.begin(),cmp);
    for(int i=0;i<c.size();i++){
        printf("%d %d\n",c[i].x,c[i].y);
    }
}

运行结果:

stl merge函数使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133491.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • neo4j如何安装_neo4j环境变量配置

    neo4j如何安装_neo4j环境变量配置一、neo4j简介最近开始学习知识图谱,所以首先想先学习一下neo4j的使用。Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。由于知识图谱中存在大量的关系型信息(实体—关系—实体),使用结构化数据库进行存储将产生大量的冗余存储信息,因此将图数据库作为知识图谱的存储容器成为流行的选择。当前较为常用的图数据库主要有Neo4j等。二、neo4j的安装功能快捷键撤销:Ctrl/Command+Z重做:Ctrl/Command+Y加粗:Ctrl/Co

    2022年10月26日
    0
  • java activiti 教程_最近学习工作流 推荐一个activiti 的教程文档「建议收藏」

    java activiti 教程_最近学习工作流 推荐一个activiti 的教程文档「建议收藏」异步操作activiti通过事务方式执行流程,可以根据你的需求定制。现在开始看一下activiti通常是如何处理事务的。如果触发了activiti的操作(比如,开始流程,完成任务,触发流程继续执行),activiti会推进流程,直到每个分支都进入等待状态。更抽象的说,它会流程图执行深度优先搜索,如果每个分支都遇到等待状态,就会返回。等待状态是”稍后”需要执行任务,就是说activiti会把…

    2022年7月21日
    24
  • CMD查看端口占用并关闭命令

    CMD查看端口占用并关闭命令1.查询端口netstat-ano|findstr“123456”TCP127.0.0.1:12340.0.0.0:0LISTENING67892.查询端口名tasklist|findstr“6789”studio64.exe6789Console31,385,024K3.关闭端口taskkill/pid“6789”/F.

    2022年5月12日
    47
  • c#开发微信公众平台_小程序开发教程

    c#开发微信公众平台_小程序开发教程本文转自http://www.wuling365.com/Article/View.aspx?Id=30  想学习微信开发技术请加入我们!郴州微信开发QQ群:587978628  最近在开发“郴州微信营销”系统,网络上涉及微信开发的代码99%都是PHP写的,由于本人不想再学习PHP,于是决定用C#开发。现将开发过程及一些实现细节记录下来,供大家参考。由于本人能力有限,错误之处在所难免,欢

    2022年8月20日
    6
  • iOS Foundation框架 -2.常用集合类简单总结

    iOS Foundation框架 -2.常用集合类简单总结

    2021年8月28日
    55
  • PyTorch建立resnet34和resnet101代码[通俗易懂]

    PyTorch建立resnet34和resnet101代码[通俗易懂]model.pyimporttorch.nnasnnimporttorchclassBasicBlock(nn.Module):expansion=1def__init__(self,in_channel,out_channel,stride=1,downsample=None):super(BasicBlock,self).__init__()self.conv1=nn.Conv2d(in_channels=

    2022年9月28日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号