对向量进行排序而不改变原始向量的最佳方法是什么?

2024-04-17

正如标题所说,我正在寻找一种在不修改原始向量的情况下对向量进行排序的方法。 我的第一个想法当然是在排序之前创建向量的副本,例如:

std::vector<int> not_in_place_sort(const std::vector<int>& original)
{
   auto copy = original;
   std::sort(copy.begin(), copy.end());
   return copy;
}

然而,也许有一种更有效的方法来使用 C++ 标准算法执行排序(也许是sort and transform?)


使用partial_sort_copy。这是一个例子:

vector<int> v{9,8,6,7,4,5,2,0,3,1};
vector<int> v_sorted(v.size());
partial_sort_copy(begin(v), end(v), begin(v_sorted), end(v_sorted));

现在,v 保持不变,但 v_sorted 包含 {0,1,2,3,4,5,6,7,8,9}。

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

对向量进行排序而不改变原始向量的最佳方法是什么? 的相关文章

随机推荐

  • SQL 实现层次关系

    我有一个表 其中产品根据层次关系 如树结构 进行分类 我必须选择一个类别以及任何级别的所有子类别 见下图 例如我想要一个sql语句 当我查询传递id 11时 它返回我 19 20 21 22 23 24 25 26 在 MySQL 中存储分
  • 获取 JPA 本机插入查询生成的标识符

    出于性能原因 我需要使用一些本机查询将新对象插入数据库 我有一个非常复杂的 JPA 持久层 它管理我通常的实体读写 我想使用这个持久层来运行本机查询 我知道我需要方法 EntityManager createNativeQuery Stri
  • 向 Shiny 应用程序添加多个反应图和表格

    我正在开发一个闪亮的应用程序 在我工作的过程中 我一直在以随意的方式添加数字和表格 我希望有一个更好的框架 以便随着它的进一步发展 我可以灵活地将反应性图形和表格添加到输出中 目前 我一直在使用 tabPanel 和 Fluidrow 添加
  • 使用 Log4Net 格式化日期时间

    我想在使用 Log4Net 编写的日志文件中显示时间戳 HH mm ss 我希望该值采用中部时间 但我不希望出现偏移量 理想情况下 我希望它能够阅读
  • HMVC 和动态小部件

    背景 我使用 小部件 一词作为具有自己的控制器 因此有自己的操作 的部分视图 并且它几乎放置在所有页面中 我通过 HMVC 实现了它的渲染 这非常棒 Problem 现在的问题是小部件本身执行操作 考虑一下购物车小部件 该小部件被放置在所有
  • jQuery 1.6 中可能存在的错误 - $(...).attr("checked") 不起作用

    我的表单上有两个单选按钮 直到我开始使用 jQuery 1 6 为止 以下代码工作正常
  • React:第一次点击时状态未更新

    我正在制作购物车样本 每次单击时 我都会将项目的对象添加到购物车数组中 当我第一次单击 添加购物车 按钮时 它不会更新购物车 但第二次会更新 不过 当我单击渲染器返回语句中的 viewCart 按钮时 它会显示购物车中的准确商品数量 请参阅
  • Rails 的 utc_to_local 和夏令时

    gt e Event first gt e registration start utc registration start utc is a datetime column gt Sat 23 Oct 2010 06 38 00 UTC
  • PooledRedisClientManager 未释放连接

    我将 json 数据列表存储在 redis 中并使用 ServiceStack c 客户端访问它 我本质上是在管理自己的外键 我在其中存储zrangeid 我使用应用程序内部的接口从zrange然后从 Redis 获取底层 json 对象并
  • 通过 Plumbing 命令查看 Git 分支状态

    有什么办法可以得到输出git branch v作为管道命令 确切地说 我只对分支的状态感兴趣 即它是否是 gone or not 例如给出以下内容git branch v output gt git branch v master 32c5
  • 我应该在混合 Objective-C / Swift 项目中使用 Realm Objective-C 还是 Realm Swift?

    我的项目使用 Swift 并面向 iOS 8 0 及更高版本 但我们使用旧 Objective C 项目中的一些文件 并通过 CocoaPods 引入一些 Objective C 库 我应该在这个项目中使用哪个 Realm 接口 Objec
  • AxInterop 和 Interop 有什么区别?

    我已将 ocx 添加到 VS 的工具箱中 创建了两个 dll Interop NNN dll AxInterop NNN dll 每一个是什么 两者都需要吗 Interop xxx dll 和 AxInterop xxx dll 分别是引用
  • Xcode 10 不支持 SVN (Subversion)

    新安装的Xcode 10 测试版版本 看不到 SVN 的选项Xcode gt Preferences gt Source Control 我可以单独看到 Git 我猜 Xcode 10 删除了 SVN GUI 而是仅支持 Git 或者我错过
  • 计算 data.table 中的记录数并生成每组内的行号

    我有以下数据表 set seed 1 DT lt data table VAL sample c 1 2 3 10 replace TRUE VAL 1 1 2 2 3 2 4 3 5 1 6 3 7 3 8 2 9 2 10 1 With
  • Angular 5 设置 HTML Select 元素的选定值

    这是我想做的
  • 具有不同范围的多个 AngularJS 指令

    您好 我在同一页面上有两个弹出指令 问题是当我点击其中一个时 它们都会弹出 如何将每个范围相互隔离 以便仅弹出单击的弹出窗口 HTML
  • 以编程方式截取屏幕截图不会捕获 surfaceVIew 的内容

    我有一个应用程序 我希望能够捕获屏幕截图 布局的背景是一个 SurfaceView 显示来自后置摄像头的视频 下面的代码可以截图 但是surfaceView的内容保存为黑色 这是代码 btn setOnClickListener new O
  • Flurry iOS 崩溃报告分析

    过去几天我一直在尝试使用 Flurry 在 iPad 应用程序上使用 Flurry 测试崩溃报告 但没有取得太大成功 当我在线查看 Flurry 仪表板时 它没有显示任何崩溃报告 虽然我可以看到 Flurry Dashboard 中注册的其
  • 使用 DownloadManager 获取下载状态

    我进行了很多搜索 但找不到满意的答案 我只是创建了一个方法 当调用时 在 Log i 中打印所有可用的下载状态 方法如下 DownloadManager downloadManager DownloadManager getSystemSe
  • 对向量进行排序而不改变原始向量的最佳方法是什么?

    正如标题所说 我正在寻找一种在不修改原始向量的情况下对向量进行排序的方法 我的第一个想法当然是在排序之前创建向量的副本 例如 std vector