C++20 范围和排序

2024-03-16

我正在处理 C++ 20 的最后 4 个大版本,试图学习新的主要功能。 尝试来自网络的一些与范围相关的代码,我写了:

std::vector ints{ 6, 5, 2, 8 };
auto even = [](int i) {
    return 0 == i % 2;
};

// ranges...
auto rr = ints | std::views::filter(even) 
               | std::views::transform([](auto i) {
                   return i * i;
                 })
               | std::views::reverse;

然后我会排序,就像 range-v3 所做的那样|action::sort,但我知道这个实现是不一样的。

我发现的排序方式是:

ints = std::vector(std::ranges::begin(rr), std::ranges::end(rr));
std::ranges::sort(ints);

我错了吗?有谁知道如何用管道样式对视图进行排序?


然后我会排序,就像 range-v3 所做的那样|action::sort ...

不,你实际上无法排序rr像这样:

rr |= ranges::actions::sort; // error

because rr is a view. While views 可以提供对底层范围的可变访问,sort另外需要范围来支持随机访问。惰性生成的view like rr不允许这样做。

您可以创建一个vector from rr正如你所做的那样,然后你可以使用actions在该范围内:

ints |= ranges::actions::sort;  // ok

然而,c++20 没有任何actions(希望我们能在 c++23 中得到它们),所以在那之前你必须调用算法sort没有管道语法:

std::ranges::sort(ints);  // ok
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++20 范围和排序 的相关文章

  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • 可访问性不一致:参数类型的可访问性低于方法

    我试图在两个表单之间传递一个对象 基本上是对当前登录用户的引用 目前 我在登录表单中有一些类似的内容 private ACTInterface oActInterface public void button1 Click object s
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 将 bootstrap select2 与 JqGrid 表单一起使用

    我正在尝试使用 jqgrid 形式实现 bootstrap select2 但似乎可以正确执行 在 jqgrid 声明的 colmodel 上我有 name staff index staff width 31 formoptions el
  • SoapUI 更改端点地址

    我想更改端点地址 但它给了我定义的值 我的意思是 只有一个值 我尝试在那里写 但它不起作用 它不可编辑 我怎样才能改变它 查看请求窗口并展开包含端点地址的选择框 你应该看到这样的东西 edit current add new endpoin
  • xml 模式中是否有任何方法可以让 xml 元素中的属性始终大于另一个属性?

    这里是xml
  • 发送器停止后让接收器继续运行

    我正在使用一个基于 Google 的简单接收器CastHelloText 示例应用程序 https github com googlecast CastHelloText chrome 当发送者断开连接时 我想允许接收者继续显示 我认为这可
  • Python 网络服务

    我正在做类似于 Ubuntu Landscape 的服务器 客户端应用程序 http www canonical com enterprise services ubuntu advantage landscape http www can
  • 如何在 XML 中表示列表数据

    我正在为我当前的用例设计 XML 文档 我的用例是 给定一个 id 我可以获得检查分数 天赋分数和类别数量 每个类别都会有类别ID 检查分数和天赋分数 所以假设如果我有两个 id 那么上面的数据将存在于两个 id 中 例如 下面是我基于单个
  • 在 Neo4J Cypher 2.0 中创建多个节点/边时发出一个 MERGE 请求更好,还是将其拆分为事务更好?

    我有一个很长的 Cypher 查询 新的 Neo4J 2 0 版本 它使用 MERGE 命令创建多个节点和连接 问题是 您认为我最好将其分成不同的部分并将其作为交易提交 为了稳健性 还是应该保留长的单个交易 为了速度 这是查询 MATCH
  • 将逗号(,)放在数组末尾。这是约定吗?

    有时我会看到如下所示的数组 array item1 gt array subitem1 subitem2 为什么数组末尾添加了逗号 而submit m2后没有元素 它使得稍后添加另一个条目变得更加容易
  • Android 圆形复选标记动画

    我正在尝试实现类似的目标BEM动画类型描边可以在 iOS 库中找到BEM复选框 https github com Boris Em BEMCheckBox 我尝试使用动画矢量可绘制对象来实现此目的 但我不知道如何对圆内的复选标记进行动画处理
  • x86 asm:如何将 reg 设置为非 SIB 支持的偏移量?

    我有一个数组a24 字节结构体 排列无填充 以便结构体 1 在结构体 0 之后 24 个字节处开始 void a 1 void a 0 24 rbx保存结构体的索引 我想设置rdi to a rbx 24 and rsi to a rbx
  • 如何在 Startup.Configure 中处理异步操作?

    在我的 ASP NET 5 应用程序中 我想将一些数据从 Azure 加载到 Startup Configure 方法内的缓存中 Azure SDK 专门公开异步方法 通常 调用异步方法是通过异步方法内的等待完成的 如下所示 public
  • 在 if() 内调用方法 - C#

    我有几个方法根据它们的成功返回一个 bool 在 IF 内部调用这些方法有什么问题吗 makes sure that Method2 will only get called if Method1 returned true use to
  • 如何防止在表单加载时选择 datagridview 单元格

    如何在表单加载时不选择 datagridview 单元格 我已经尝试了太多 我的 dgvproducts 属性是 readonly false selection mode CellSelect 1 我已将此代码放入form shown事件
  • 如何将 .pdf 和 .jpg 文件合并为一个 pdf

    磁盘上有两个文件 jpg和 pdf 我需要读取这两个文件并将它们添加到新的pdf中并发送到浏览器以便可以下载 新的 pdf 文件仅包含 pdf 内容 不包含 jpeg 文件图像 memoryStream myMemoryStream new
  • 为什么 mysql JDBC 驱动程序返回 TRANSACTION_READ_COMMITTED 作为默认隔离级别

    据我所知 Mysql DB 的默认事务隔离级别是 REPEATABLE READ 看Mysql 事务隔离级别 https dev mysql com doc refman 8 0 en innodb transaction isolatio
  • 使用 FOSRestBundle 返回响应时无法找到模板

    我正在使用 FOS Rest Bundle 构建 Api 问题是每次我尝试返回任何内容时都会收到错误消息 无法找到模板 我真的不想渲染模板 而是序列化我拥有的实体 这是我的代码 路由 yml acme api register patter
  • 将 2 个数字相乘,然后求和

    我很难尝试做一些看起来应该很容易做的事情 我基本上想将一个节点中的 2 个数字相乘 然后将所有节点的这些数字相加 这是我尝试过的 XSLT 代码
  • 使用 ncurses 时未定义对“stdscr”的引用

    我正在尝试在 Ubuntu 11 10 中编译我的代码并收到这些错误等等 到目前为止 通过谷歌搜索我认为这是一个链接错误 具体来说 有人建议确保您拥有正确的标头并链接 lncurses 库 我已经这么做了 我仍然收到此错误 我还读到也许我应
  • git reset --soft 的实际用途?

    我使用 git 已经有一个多月了 事实上 我昨天才第一次使用重置 但软重置对我来说仍然没有多大意义 我知道我可以使用软重置来编辑提交 而无需更改索引或工作目录 就像我所做的那样git commit amend 这两个命令真的一样吗 rese
  • C++20 范围和排序

    我正在处理 C 20 的最后 4 个大版本 试图学习新的主要功能 尝试来自网络的一些与范围相关的代码 我写了 std vector ints 6 5 2 8 auto even int i return 0 i 2 ranges auto