按结构中的变量对结构向量进行排序? [复制]

2023-12-03

我有一个数据结构,例如:

struct Data
{
string firstname;
string lastname:
string age;
}

我已将每个结构放置在一个向量 (VectorOfData) 中。是否可以循环遍历这个向量并按年龄降序对向量中的每个结构进行排序?使用类似的东西:

for(std::vector<Data>::const_iterator it = VectorOfData.begin(); it != VectorOfData.end(); ++it)
{

//sorting by age here?

}

我假设它不会那么简单,因为 it 迭代器一次仅访问向量中的一个结构?

我意识到我可能可以在将结构放入向量之前进行排序,但我的问题并不那么简单。这只是我可以解释的最简单的方式。任何建议将不胜感激,谢谢


您可以将 std::sort 与自定义比较函数一起使用:

bool is_younger(const Data& x, const Data& y) { return x.age < y.age; }

sorting:

std::sort(VectorOfData.begin(), VectorOfData.end(), is_younger);

或者,您可以定义自定义functor(注意:这实际上是首选,因为它增加了内联的可能性,请阅读:更快的排序)

struct is_younger_functor
{
    bool operator()(const Data& x, const Data& y) const
    {
        return x.age < y.age; 
    }
};

sorting:

std::sort(VectorOfData.begin(), VectorOfData.end(), is_younger_functor());

如果要定义严格的排序关系Data,您应该考虑将其转换为常规类型(定义运算符 、>=)。

在这种情况下,您不需要定义 is_younger 函子,并且可以仅使用迭代器调用 std::sort 。

编辑:严格来说,您只需要为 std::sort 定义运算符

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

按结构中的变量对结构向量进行排序? [复制] 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • ActionBar 中 SearchView 的主题

    我有一个SearchView in an ActionBar This SearchView图标是黑色的 文本也是黑色的 而我的图标是白色的 menu menu
  • 如何检测 Chrome 扩展程序中的网络状态变化

    我正在编写一个简单的 Chrome 扩展 需要该行为来检测设备是否连接到互联网 我目前正在尝试连接到 ping 服务来检查网络状态 但效率不高 我可以从 Chrome JavaScript API 监听任何事件吗 中没有具体事件Chrome
  • 写入操作期间发生磁盘错误。 (HRESULT 异常:0x8003001D (STG_E_WRITEFAULT))

    我正在使用 EPPlus 读取 vb net 中的 csv 文件 当我运行此代码时 出现错误 写入操作期间发生磁盘错误 HRESULT 异常 0x8003001D STG E WRITEFAULT 这是我的代码 Public Functio
  • 尝试让 QProcess 使用队列

    我正在尝试使用队列运行多个进程 并使用以下命令获取所有进程的输出QProcess但我有几个问题 我正在使用一个QSpinBox设置同时运行的最大进程数 我可以让主线程中的一切正常工作 或者如果我使用进程中的进程运行循环QObject但我无法
  • XML 规范是否定义在自闭斜杠之前有空格是非法的?

    我说的是 XML 文档而不是 HTML 由于在 HTML 中 br and br 都是有效的 想知道 XML 规范是否定义了自闭斜杠之前是否允许有空格 我刚刚遇到一个奇怪的问题
  • ModuleNotFoundError:没有名为“Crypto.Math”的模块

    在 Windows 上 我想运行pyinstaller myapp py w f但我对加密模块有一些错误 在我的代码中 我使用 4 个导入 这 4 个导入中的每一个 独立 都会给我同样的错误 from googleapiclient dis
  • 将属性文件添加到 IntelliJ 的类路径

    我正在使用 运行 gt 运行 菜单从 IntelliJ IDE 运行一个简单的 Java 程序 效果很好 现在我想添加 log4j 日志记录 我在项目根目录下添加了一个资源文件夹 我在该文件夹中添加了一个 log4j properties
  • angularjs 单击按钮显示下一个/上一个 div

    我有一堆用 ng repeat 创建的 Div Plunker 快速图片 是否可以像滑块一样创建这堆 div 工作 喜欢 如果我按 下一步 按钮 顶部 div 将滑开 并显示第二个顶部 按 上一个 按钮将显示上一个 div 如果有 Code
  • SQL 挑战/难题:给定堆栈跟踪 - 如何找到每个时间点的顶部元素?

    我现实生活中的用例是合并嵌套范围 我画了一些草图 然后我看到了堆栈 PUSH 和 POP 操作的开始和结束范围之间的相似之处 我明白解决了这个问题也就解决了原来的问题 The op实际上可以从问题中删除列 当 val 为 NULL 时 则为
  • 怎么了?(NumberFormatException:null)

    import java io class AccountInfo private String lastName private String firstName private int age private float accountB
  • Nginx 变量类似于 Apache 中的 SetEnv?

    我在 Apache 中使用 SetEnv 在虚拟主机中设置一些变量 然后在 PHP 中使用这些变量进行恢复 SERVER the variable 现在我正在切换到Perl Catalyst和Nginx 但Nginx中的 env 指令似乎不
  • 我无法将子菜单项设置为已选中

    我正在为我的抽屉使用 NavigationView 这是 menus xml 文件 它定义了抽屉的所有菜单项 menu menu
  • 詹金斯看不到映射的驱动器

    尝试在 Jenkins 中执行构建时出现以下错误 Started by user anonymous Building in workspace C Users mryan git AML AML cmd c call C Users MR
  • JSP生成Excel电子表格(XLS)下载

    我正在 JSP 中开发这个应用程序 我希望以 XLS MS Excel 格式 从数据库中导出一些数据 在tomcat下是否可以像普通Java应用程序一样编写一个文件 然后生成到该文件的链接 或者我需要使用特定的 API 吗 这样做时会遇到权
  • 如何在 Tkinter 中播放视频文件?

    有没有办法播放视频文件AVI MP4 etc 我尝试使用PyMedia 但显然它只适用于Pygame 我的问题的解决方案是什么 你可以使用python gstreamer用于播放视频 这适用于 Linux 上的我 但也应该适用于 Windo
  • 将 stdout 和 stderr 重定向到文件,并将 stderr 重定向到 stdout

    以下代码将 stdout 写入日志文件并打印 stderr bash script sh gt gt out log 这再次将 stdout 和 stderr 写入日志文件 bash script sh gt gt out log 2 gt
  • SquirreL SQL 客户端 3.7.1 上的 PL/SQL

    我试图在 SQuirrel 上执行 PL SQL 脚本 但似乎不起作用 我通过在 额外类路径 上添加 ojdbc7 jar 来配置 Oracle Thin Driver 能够连接到数据库 但当尝试运行简单代码时 会出现错误 code BEG
  • 如何在 pyGTK 中搜索 gtk.ListStore 并删除元素?

    我有以下代码 其中 store 是gtk ListStore效价是gtk TreeIter 文档说如果没有下一行 iter next 将返回None 因此找到时中断 它应该通过搜索ListStore of int str 并删除其中的一项i
  • 每行对齐 2 个 DIV,高度相同

    我们遇到一个问题 我们需要一个包含动态内容的 div 列表 每行始终有 2 个 div 这两个元素应该具有相同的高度 目前我们有一个使用 JavaScript 设置框高度的解决方案 但它的性能不是很好 因为它会在每次调整大小时重新计算尺寸
  • 按结构中的变量对结构向量进行排序? [复制]

    这个问题在这里已经有答案了 我有一个数据结构 例如 struct Data string firstname string lastname string age 我已将每个结构放置在一个向量 VectorOfData 中 是否可以循环遍历