当前位置:首页 > 科技  > 软件

C++ algorithm.h 头文件的常见算法的使用

来源: 责编: 时间:2024-05-17 17:45:22 231观看
导读C++标准库中的头文件是一个功能强大且广泛使用的工具包,提供了各种常见的算法函数,帮助开发者高效地处理数据。algorithm.h头文件是C++标准库的一部分,它提供了大量的算法模板,可以用于解决各种复杂的计算问题。这些算法

C++标准库中的头文件是一个功能强大且广泛使用的工具包,提供了各种常见的算法函数,帮助开发者高效地处理数据。9gW28资讯网——每日最新资讯28at.com

algorithm.h头文件是C++标准库的一部分,它提供了大量的算法模板,可以用于解决各种复杂的计算问题。这些算法包括排序、搜索、合并、转换等,它们可以帮助我们更高效地处理数据,提高程序的性能。9gW28资讯网——每日最新资讯28at.com

9gW28资讯网——每日最新资讯28at.com

1. std::sort

std::sort 用于对范围内的元素进行排序。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {4, 2, 5, 1, 3};    std::sort(vec.begin(), vec.end());    for (int n : vec) {        std::cout << n << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

2.std::reverse

std::reverse 用于反转范围内的元素顺序。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 4, 5};    std::reverse(vec.begin(), vec.end());    for (int n : vec) {        std::cout << n << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

9gW28资讯网——每日最新资讯28at.com

3.std::find

std::find 在范围内查找第一个等于给定值的元素。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 4, 5};    auto it = std::find(vec.begin(), vec.end(), 3);    if (it != vec.end()) {        std::cout << "Element found: " << *it << std::endl;    } else {        std::cout << "Element not found" << std::endl;    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

4.std::accumulate

std::accumulate 用于计算范围内元素的累积和(需要头文件)。9gW28资讯网——每日最新资讯28at.com

#include <numeric>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 4, 5};    int sum = std::accumulate(vec.begin(), vec.end(), 0);    std::cout << "Sum: " << sum << std::endl;    return 0;}

9gW28资讯网——每日最新资讯28at.com

5.std::count

std::count 用于计算范围内等于给定值的元素个数。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 1, 1, 4, 5};    int count = std::count(vec.begin(), vec.end(), 1);    std::cout << "Count of 1s: " << count << std::endl;    return 0;}

9gW28资讯网——每日最新资讯28at.com

6.std::copy

std::copy 将范围内的元素复制到另一范围。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec1 = {1, 2, 3, 4, 5};    std::vector<int> vec2(5);    std::copy(vec1.begin(), vec1.end(), vec2.begin());    for (int n : vec2) {        std::cout << n << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

7.std::remove

std::remove 移除范围内等于给定值的元素,但不改变容器大小。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 1, 4, 1, 5};    auto new_end = std::remove(vec.begin(), vec.end(), 1);    vec.erase(new_end, vec.end()); // 可选:删除多余元素    for (int n : vec) {        std::cout << n << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

8.std::unique

std::unique 用于移除连续的重复元素。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 1, 2, 2, 3, 3, 4, 4, 5};    auto new_end = std::unique(vec.begin(), vec.end());    vec.erase(new_end, vec.end()); // 可选:删除多余元素    for (int n : vec) {        std::cout << n << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

9.std::lower_bound

std::lower_bound 在已排序范围内查找首个不小于给定值的元素。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 4, 5};    auto it = std::lower_bound(vec.begin(), vec.end(), 3);    if (it != vec.end()) {        std::cout << "Lower bound: " << *it << std::endl;    } else {        std::cout << "Element not found" << std::endl;    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

10.std::upper_bound

std::upper_bound 在已排序范围内查找首个大于给定值的元素。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 4, 5};    auto it = std::upper_bound(vec.begin(), vec.end(), 3);    if (it != vec.end()) {        std::cout << "Upper bound: " << *it << std::endl;    } else {        std::cout << "Element not found" << std::endl;    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

11.std::equal_range

std::equal_range 在已排序范围内查找等于给定值的子范围。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 3, 3, 4, 5};    auto range = std::equal_range(vec.begin(), vec.end(), 3);    std::cout << "Range of 3s: ";    for (auto it = range.first; it != range.second; ++it) {        std::cout << *it << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

12.std::merge

std::merge 将两个已排序范围合并为一个有序范围。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec1 = {1, 3, 5};    std::vector<int> vec2 = {2, 4, 6};    std::vector<int> result(6);    std::merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), result.begin());    for (int n : result) {        std::cout << n << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

13.std::transform

std::transform 对范围内的元素应用给定的函数,并将结果存储到另一范围。9gW28资讯网——每日最新资讯28at.com

#include <algorithm>#include <vector>#include <iostream>int main() {    std::vector<int> vec = {1, 2, 3, 4, 5};    std::vector<int> result(5);    std::transform(vec.begin(), vec.end(), result.begin(), [](int x) { return x * x; });    for (int n : result) {        std::cout << n << " ";    }    return 0;}

9gW28资讯网——每日最新资讯28at.com

以上介绍了头文件中的十三种常见算法,并通过代码示例展示了它们的使用方法。这些算法极大地简化了数据处理任务,使代码更简洁、更高效。9gW28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-88920-0.htmlC++ algorithm.h 头文件的常见算法的使用

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 微服务如何灰度发布?你会吗?

下一篇: Python 中 15 个不为人知的高级特性

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 三言两语说透设计模式的艺术-简单工厂模式

    一、写在前面工厂模式是最常见的一种创建型设计模式,通常说的工厂模式指的是工厂方法模式,是使用频率最高的工厂模式。简单工厂模式又称为静态工厂方法模式,不属于GoF 23种设计
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就&ldquo;胡锡进炒股是否知道认真报道&rdquo;展开讨论。有
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新业务到 2022 年底还是 0,希望 2023 年出来一个 1。&rdquo;这是2022年底,李彦宏
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • AI艺术欣赏体验会在上海梅赛德斯奔驰中心音乐俱乐部上演

    光影交错的镜像世界,虚实幻化的视觉奇观,虚拟偶像与真人共同主持,这些场景都出现在2019世界人工智能大会的舞台上。8月29日至31日,“AI艺术欣赏体验会”在上海
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top