C++,stl,常用排序算法,常用拷贝和替换算法

2024-02-17 08:36

本文主要是介绍C++,stl,常用排序算法,常用拷贝和替换算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.常用排序算法

sort

random_shuffle

merge

reverse

2.常用拷贝和替换算法

copy

replace

replace_if

swap


1.常用排序算法

sort

默认从小到大排序 

#include<bits/stdc++.h>
using namespace std;int main()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(9);v.push_back(2);v.push_back(4);sort(v.begin(),v.end());for(auto &ele:v){cout << ele << ' ';}sort(v.begin(),v.end(),greater<int>());//降序排列cout << endl;for(auto &ele:v){cout << ele << ' ';}return 0;
}

random_shuffle

使用的时候要加随机数种子

 

#include<bits/stdc++.h>
using namespace std;void print(int v)
{cout << v << ' ';
}int main()
{srand((unsigned int)time(NULL));vector<int> v;v.push_back(1);v.push_back(2);v.push_back(9);v.push_back(2);v.push_back(4);for_each(v.begin(),v.end(),print);cout << endl;random_shuffle(v.begin(),v.end());for_each(v.begin(),v.end(),print);return 0;
}

 

merge

 

#include<bits/stdc++.h>
using namespace std;void print(int v)
{cout << v << ' ';
}int main()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(9);v1.push_back(2);v1.push_back(4);sort(v1.begin(),v1.end());vector<int> v2;for(int i = 2; i <= 6; i += 2){v2.push_back(i);}vector<int> v;v.resize(v1.size() + v2.size());//必须v1,v2都是升序或者都是降序merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v.begin());for_each(v.begin(),v.end(),print);return 0;
}

 

reverse

 

#include<bits/stdc++.h>
using namespace std;void print(int v)
{cout << v << ' ';
}int main()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(9);v1.push_back(2);v1.push_back(4);for_each(v1.begin(),v1.end(),print);cout << endl;reverse(v1.begin(),v1.end());cout << "反转后" << endl;for_each(v1.begin(),v1.end(),print);return 0;
}

 

2.常用拷贝和替换算法

 

copy

#include<bits/stdc++.h>
using namespace std;void print(int v)
{cout << v << ' ';
}int main()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(9);v1.push_back(2);v1.push_back(4);for_each(v1.begin(),v1.end(),print);cout << endl;vector<int> v2;v2.resize(v1.size());copy(v1.begin(),v1.end(),v2.begin());cout << "复制后" << endl;for_each(v2.begin(),v2.end(),print);return 0;
}

replace

 

#include<bits/stdc++.h>
using namespace std;void print(int v)
{cout << v << ' ';
}int main()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(9);v1.push_back(2);v1.push_back(4);for_each(v1.begin(),v1.end(),print);cout << endl;cout << "替换后" << endl;replace(v1.begin(),v1.end(),2,1000);for_each(v1.begin(),v1.end(),print);return 0;
}

 

replace_if

 

#include<bits/stdc++.h>
using namespace std;class print
{
public:void operator()(int v){cout << v << ' ';}
};class dayu2
{
public:bool operator()(int v){return v > 2;}
};int main()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(9);v1.push_back(2);v1.push_back(4);for_each(v1.begin(),v1.end(),print());cout << endl;cout << "替换后" << endl;replace_if(v1.begin(),v1.end(),dayu2(),999);for_each(v1.begin(),v1.end(),print());return 0;
}

 

swap

 交换的容器要是同种类型

#include<bits/stdc++.h>
using namespace std;class print
{
public:void operator()(int v){cout << v << ' ';}
};int main()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(9);v1.push_back(2);v1.push_back(4);vector<int> v2;for(int i = 1; i <= 3; i++){v2.push_back(i);}cout << "交换前" << endl;for_each(v1.begin(),v1.end(),print());cout << endl;for_each(v2.begin(),v2.end(),print());cout << endl << "交换后" << endl;swap(v1,v2);for_each(v1.begin(),v1.end(),print());cout << endl;for_each(v2.begin(),v2.end(),print());return 0;
}

这篇关于C++,stl,常用排序算法,常用拷贝和替换算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/717235

相关文章

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

详解C++中类的大小决定因数

《详解C++中类的大小决定因数》类的大小受多个因素影响,主要包括成员变量、对齐方式、继承关系、虚函数表等,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 非静态数据成员示例:2. 数据对齐(Padding)示例:3. 虚函数(vtable 指针)示例:4. 继承普通继承虚继承5.

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时