merge()是C++标准库的函数,主要实现函数的排序和合并,不仅仅是合并,具体要求参照标准库。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网页空间、营销软件、网站建设、讷河网站维护、网站推广。
#include"stdafx.h"
#includeiostream
#includealgorithm
#includearray
#includelist
usingnamespacestd;
boolcomp(constinti,constintj){
returnij;
}
intmain(void){
/*自定义谓词*/
std::arrayint,4ai1={1,3,4,5};
std::listintlsti1;
for(constautoi:ai1)
lsti1.push_front(i);//从大到小
std::arrayint,4ai2={2,6,7,8};
std::listintlsti2;
for(constautoi:ai2)
lsti2.push_front(i);
lsti1.merge(lsti2,comp);
std::cout"merge():";
for(constautoi:lsti1)
std::couti"";
std::coutstd::endl;
/*默认谓词*/
std::arrayint,4ai1d={1,3,4,5};
std::listintlsti1d;
for(constautoi:ai1d)
lsti1d.push_back(i);//从小到大
std::arrayint,4ai2d={2,6,7,8};
std::listintlsti2d;
for(constautoi:ai2d)
lsti2d.push_back(i);
lsti1d.merge(lsti2d);
std::cout"merge():";
for(constautoi:lsti1d)
std::couti"";
std::coutstd::endl;
return0;
}
扩展资料
Merge算法的两种接口,把两个有序的数组合并到另一个数组中:
void Merge(int *A, int f, int m, int e){
int temp[e-f+1];
int i,first=f,last=m+1;
for(i=0;i(e-first+1)f=mlast=e;i++){
if(A[f]=A[last]) {
temp[i]=A[f];
f++;
}
else {
temp[i]=A[last];
last++;
}
}
while(fmlast=e){
temp[i]=A[last];
i++;
last++;
}
while(f=mlaste){
temp[i]=A[f];
i++;
f++;
}
for(i=0;first=e;i++,first++){
A[first]=temp[i];
}
}
参考资料来源:百度百科—c语言
完整代码如下,有任何疑问可以追问。
#include stdio.h
#include stdlib.h
int merge(char *in1,char *in2,char *out)
{
FILE *f_in,*f_out;
int n;
char buf[4096];
//打开输出文件
f_out=fopen(out,"wb");
if(!f_out) return 0;
//打开并读第一个文件写到输出文件
f_in=fopen(in1,"rb");
if(!f_in) return 0;
while(n=fread(buf,1,sizeof(buf),f_in))
{
fwrite(buf,1,n,f_out);
}
fclose(f_in);
//打开并读第二个文件写到输出文件
f_in=fopen(in2,"rb");
if(!f_in) return 0;
while(n=fread(buf,1,sizeof(buf),f_in))
{
fwrite(buf,1,n,f_out);
}
fclose(f_in);
fclose(f_out);
return 1;
}
int main()
{
if (!merge (“1.txt”, “2.txt”, “3.txt”))
printf(“Failed”);
else
printf(“successfully”);
return 0;
}
#include stdio.h
#include string.h
void catstring(char *str0, int len0, char *str1, int len1, char *str2, int len2)
{
if (len2 = len0 + len1) {
return;
}
memcpy(str2, str0, len0);
memcpy(str2 + len0, str1, len1);
}
int main()
{
char str0[20] = "Golden";
char str1[20] = "View";
char str2[20] = { 0 };
catstring(str0, strlen(str0), str1, strlen(str1), str2, 20);
printf("str2 = %s\n", str2);
return 0;
}
请采纳,谢谢!
//定义一个圆的函数,一个标记变量flag ,一个半径,当flag为0时求面积,不为0时求周长
float yuan(int flag,float r){
if(flag==0){
return pai*r*r;
}else{
return pai*2*r;
}
}