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

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(使用前将#替换为@)

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

  • SL4 AutoCompleteBox 重复筛选结果问题

    我在 AutoCompleteBox 过滤方面遇到问题 它似乎记住了之前的过滤器 例如 我输入 A 它会返回 1 项 我删除 A 并输入 Z 这应该返回 1 项 问题是它返回 A 过滤器加上 Z 的结果 我删除 Z 并输入 S 这会带回 2
  • 扫描文本文件时如何跳过行?

    我想扫描一个文件并在阅读之前跳过一行文本 我试过 fscanf pointer n struct test i j 但这个语法只是从第一行开始 我可以使用 scanf 使用以下指令跳过行 fscanf config file n n 格式字
  • MySQL 排序顺序 - 排序规则?

    我在对 MySQL 中的 char 字段进行排序时遇到困难 问题是重音字符与非重音字符混淆 例如 Abc bd Acc 我认为这可能与整理有关 所以我将表格的排序规则更改为utf8 ut8 bin 看完之后这个帖子 https stacko
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 在 GCC 和 Clang 下,使用 lambda 的简单 RAII 包装器的复制初始化意外失败

    我在创建一个简单的 RAII 包装器时遇到了一个意想不到的问题 更不用说下面代码的逻辑不完整性了 复制构造函数和赋值运算符未删除等 这意味着是一个SSCCE 令我印象深刻的是复制初始化我的包装器与临时 lambda 的结果会导致编译错误 而
  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • Microsoft.Graph - 如何从具有不同用户名的共享邮箱发送?

    我目前正在将使用 SMTP 的服务代码移植到 Office 365 通过 SMTP 我可以使用 发件人 字段在来自共享收件箱的邮件上设置不同的用户名 同时保留共享电子邮箱地址 这似乎无法通过 Office 365 运行 其工艺流程为 客户填
  • 为什么重载方法在 ref 仅符合 CLS 方面有所不同

    公共语言规范对方法重载非常严格 仅允许根据其参数的数量和类型来重载方法 如果是泛型方法 则根据其泛型参数的数量进行重载 根据 csc 为什么此代码符合 CLS 无 CS3006 警告 using System assembly CLSCom
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 如何使用 ASP.NET Web 表单从代码隐藏中访问更新面板内的文本框、标签

    我在更新面板中定义了一些控件 它们绑定到中继器控件 我需要根据匿名字段隐藏和显示用户名和国家 地区 但问题是我无法以编程方式访问更新面板中定义的控件 我如何访问这些控件 我也在网上查找但找不到很多参考资料 下面是来自aspx页面和 cs页面
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • 使用剪贴板 SetText 换行

    如何使用 SetText 方法添加换行符 I tried Clipboard SetText eee n xxxx 但当我将剪贴板数据粘贴到记事本中时 它没有给我预期的结果 预期结果 eee xxxx 我怎样才能做到这一点 Windows
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se

随机推荐

  • 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