对于c++范围库的简单理解
2022/6/11 1:20:10
本文主要是介绍对于c++范围库的简单理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原文传送门: https://blog.csdn.net/yuejisuo1948/article/details/122149361
看了原文之后,第一时间对于std::ranges的第一印象是觉得更麻烦了,原本我们只需要掌握一个std::vector容器的使用方法,但使用范围库时,我们需要学会每种视图功能,直接就增加了学习负担。
但仔细一想,这其实是一种针对循环体内各种条件处理的简化手段,甚至能将各种条件视图封装成库以达成可复用的目的。
请看下面的代码:
以下代码在vs2022 17.1 中可进行编译, 项目-属性-C++语言标准 需要修改为: /std:c++latest
#include <iostream> #include <ranges> #include <math.h> namespace stdrv = std::ranges::views; namespace mathrv { //偶数 constexpr auto even = stdrv::filter([](int i) { return i % 2 == 0; }); //奇数 constexpr auto odd = stdrv::filter([](int i) { return i % 2 != 0; }); //结果n次幂 auto pow(int n) { return stdrv::transform([n](int i) {return (int)::pow(i, n); }); } } int main() { std::vector<int> v1 = { 9,8,7,6,5,4,3,2,1 }; auto v = v1 | mathrv::even | // 偶数 mathrv::pow(2) | // 结果2次幂 stdrv::reverse; // 倒序 for (auto n : v) std::cout << n << std::endl; return 0; }
这篇关于对于c++范围库的简单理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升