使用容器中的第 n 个元素,但使用另一个键

2023-12-04

我有两个向量。一种实际保存数据(假设是浮动),另一种保存索引。我想通过nth_element索引向量,但我希望通过实际保存数据的向量来完成比较。我正在考虑一个函子,但我猜这仅提供了 () 运算符。我通过将数据向量设为全局向量来实现这一目标,但这当然不是我们所希望的。

std::vector<float> v;                                   // data vector (global)
bool myfunction (int i,int j) { return (v[i]<v[j]); } 

int find_median(std::vector<int> &v_i)
{
    size_t n = v_i.size() / 2;
    nth_element(v_i.begin(), v_i.begin()+n, v_i.end(), myfunction);
    return v_i[n];
}

您可以使用如下函子:

class comp_with_indirection
{
public:
    explicit comp_with_indirection(const std::vector<float>& floats) :
        floats(floats)
    {}

    bool operator() (int lhs, int rhs) const { return floats[lhs] < floats[rhs]; }

private:
    const std::vector<float>& floats;
};

然后你可以像这样使用它:

int find_median(const std::vector<float>& v_f, std::vector<int> &v_i)
{
    assert(!v_i.empty());
    assert(v_i.size() <= v_f.size());

    const size_t n = v_i.size() / 2;
    std::nth_element(v_i.begin(), v_i.begin() + n, v_i.end(), comp_with_indirection(v_f));
    return v_i[n];
}

注意:在 C++11 中,您可以使用 lambda 代替命名函子类。

int find_median(const std::vector<float>& v_f, std::vector<int> &v_i)
{
    assert(!v_i.empty());
    assert(v_i.size() <= v_f.size());

    const size_t n = v_i.size() / 2;
    std::nth_element(
        v_i.begin(), v_i.begin() + n, v_i.end(),
        [&v_f](int lhs, int rhs) {
            return v_f[lhs] < v_f[rhs];
        });
    return v_i[n];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用容器中的第 n 个元素,但使用另一个键 的相关文章

  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何从 SQL Server 中的 URL 读取 JSON 数据

    我正在尝试使用以下代码从 SQL Server 2008 中的 URL 读取 JSON 数据 DECLARE temp table RowNum int DATA NVARCHAR max DECLARE url VARCHAR MAX w
  • ruby on Rails 中的 Bootstrap 模式不工作(不显示)

    我正在使用 Rail4 和 bootstrap sass 3 3 6 我已按照以下步骤操作https coderwall com p ej0mhg open a rails form with twitter bootstrap modal
  • R 中一页上的多个绘图

    如何在 R 上的一个 pdf 页上绘制 7 个不同的图表 我目前使用的是matplot 它似乎没有这个选项 我需要根据数据列绘制数据列 我最初尝试使用点阵库来做到这一点 但我似乎无法弄清楚如何绘制数据列 好像想要一个功能 要创建绘图的 pd
  • 检测 __getattribute__ 调用是否是由于 hasattr

    我正在重新实施 getattribute 为了一堂课 我想注意到提供属性的任何不正确 当然意味着失败是预料之中的 失败 因为 getattribute 实施结果相当复杂 为此 如果我的代码在引发之前无法找到 提供该属性 我会记录一条警告At
  • 估计/计算内存中对象大小的好方法

    假设我有对象 Tom 它有类 Person Class Person String Name DateTime BirthDate String Role Int32 Salary 如果它具有以下值 您能否给我它的内存大小的近似值 名字 汤
  • 是否有任何指南或工具可将 JMeter .jmx 文件转换为 Karate DSL 功能文件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何工具或指南可用于将 JMeter jmx 文件转换为空手道 DSL feature 文件 我们有一个大尺寸的 jmx 文件 我想将其转换为
  • boost::asio 与 no_delay 不可能吗?

    我知道的 我需要打电话set option tcp no delay true before connect 根据https stackoverflow com a 25871250否则没有效果 此外 set option 仅当套接字事先打
  • Java BC SicBlockCipher直接输出等价于c#

    我正在用 C 实现一些东西 对此我有一个单独的规范 并且对我需要做什么有相当清楚的了解 但同时作为参考 我有一个 Java 实现 并且希望在本例中遵循 Java 实现 如下所示尽我所能 该代码涉及加密流 Java 源代码是here相关行在这
  • eclipse打开excel文件出错

    我收到以下错误 无法创建就地编辑器 这可能是因为没有 针对类型注册的 OLE 编辑器 您尝试打开的文件的名称 创建 Ole 客户端失败 结果 2147417851 我有MS Office 2007 Excel文件存储为 另存为2003版本
  • 如何将 ctypes 指针转换为 Python 类的实例

    假设您有以下 C 代码 typedef void PythonCallbackFunc void userData void cb PythonCallbackFunc pcf void userData pcf userData 以及以下
  • PHP 文件不写入当前目录?

    我在网络主机上有一个 PHP 文件 如下所示 但文件test txt当我从浏览器执行页面时不会创建 为什么不 是权限问题吗 是的 PHP 文档说 如果文件名不存在 则创建该文件 否则 现有文件将被覆盖 除非设置了 FILE APPEND 标
  • keytool 错误:java.lang.Exception:必须指定 -keyalg

    我正在尝试创建密钥对 并从 Windows 命令行提示符 使用 Windows 10 JDK 14 将它们存储在密钥存储中 这是我正在输入的命令 keytool genkey alias chris keystore chirskeysto
  • 异步/等待与线程

    在 Net 4 5 中 微软添加了新的Async Await简化异步编码的功能 然而 我想知道 Can Async Await完全取代旧的使用方式Threads Is Async Await有能力做任何事Thread可以做 异步 Can A
  • CakePHP - 创建一个编辑同一模型的多行的表单

    我正在尝试构建一个由属于主题组的主题组成的表单 从视觉上看 主题显示在页面上每个主题组标题下 您将能够编辑主题组或单个主题的名称 如果我给你一个 HTML 的例子 div class heading div
  • 找不到元素“赋值”的声明

    所以我从 XML 和模式开始 今天我遇到了这个 但我还没能弄清楚 我收到错误消息 Ln 5 Col 2 找不到 元素 赋值 的声明 我相信我已经声明了该元素 但也许我遗漏了一些东西并且没有声明 这是我的 XML 文件
  • 如何正确使用线性渐变?

    我对 CSS3 还很陌生 我的项目的 CSS 文件中有以下样式 headerDiv background image linear gradient 04519b 044687 60 033769 我很清楚什么linear gradient
  • Watson 检索和排名 - 手动排名

    我正在尝试建立一个排名器进行演示 我进行了 自动训练 并且得到了不错的结果 可能会更好 我正在尝试进行手动训练 但我对 Bluemix 在线文档中参数的含义感到困惑 https www ibm com watson developerclo
  • PayPal 沙盒错误:Cookie 被阻止

    我正在使用贝宝沙箱帐户 一切正常 但是 现在它显示以下错误 cookie 已启用 我尝试使用不同的浏览器和不同的计算机 我仍然遇到同样的错误 我尝试清除cookies和缓存 但这没有用 有什么解决办法吗 请开启cookies以结帐 这是 P
  • Rails 4 模型始终返回 nil

    我对以下错误感到疯狂 我有一个 User 类 它的两个属性 生日和created at gt datetime 总是返回nil 除了它在数据库上有一个值 我正在使用设备来管理身份验证 这是数据库表 CREATE TABLE users id
  • 使用容器中的第 n 个元素,但使用另一个键

    我有两个向量 一种实际保存数据 假设是浮动 另一种保存索引 我想通过nth element索引向量 但我希望通过实际保存数据的向量来完成比较 我正在考虑一个函子 但我猜这仅提供了 运算符 我通过将数据向量设为全局向量来实现这一目标 但这当然