如何按第一个字符串对字符串对向量进行分组?

2024-02-20

我有一个包含字符串对的向量:

vector<pair<string, string>> list;

我想将list[n].second具有相同的字符串list[n].first

const size_t nbElements = list.size();
for (size_t n = 0; n < nbElements ; n++)
{
    const string& name = list[n].first;
    const string& type = list[n].second;
}

考虑这个例子:

(big; table) (normal; chair) (small; computer) (big; door) (small; mouse)

将导致:

(big; table, door) (normal; chair) (small; computer, mouse)

你知道该怎么做吗?


你可以使用std::map http://en.cppreference.com/w/cpp/container/map


Example:

#include <boost/algorithm/string/join.hpp>
#include <boost/format.hpp>

#include <iostream>
#include <map>
#include <vector>

int main() {
    // define original data
    std::vector<std::pair<std::string, std::string> > v = 
            {{"a", "b"}, {"a", "c"}, {"b", "a"}, {"b", "d"}, {"c", "e"}};

    // populate map
    std::map<std::string, std::vector<std::string> > grouped;
    for (auto it = v.begin(); it != v.end(); ++it) {
        grouped[(*it).first].push_back((*it).second);
    }

    // output        
    for (auto it = grouped.begin(); it != grouped.end(); ++it) {
        std::cout << boost::format("(%s: %s)\n")
                % (*it).first 
                % boost::algorithm::join((*it).second, ", ");
    }
}

输出是: http://liveworkspace.org/code/8YOMq%240

(a: b, c)
(b: a, d)
(c: e)

请注意,此代码使用了 C++11 功能(初始化列表、auto 关键字)。查看上面链接的示例以了解成功的编译。

为了自己编译它,请确保您使用的编译器支持这些功能或将它们替换为适当的 C++03 等效项。

例如,这里是迭代器类型(使用auto上面代码中的关键字):

// the iterator on the vector `v`
std::vector<std::pair<std::string, std::string> >::iterator it_v;

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

如何按第一个字符串对字符串对向量进行分组? 的相关文章

随机推荐

  • 你能在 Mongoose 中为子文档定义实例方法吗?

    如果我在 Mongoose 中有一个架构 其定义如下 var subSchema new Schema some String var topSchema new Schema subs subSchema var topModel mon
  • MATLAB 绘图轴所在框中缺少黑线

    在 MATLAB 中绘制图形时 我注意到保存轴的黑盒部分丢失了 左侧和底部 我尝试过发出 box off box on 命令没有成功 你知道我可以做什么来获得轴上相应的黑线吗 Note 我正在使用 OpenGL 渲染器 set 0 Defa
  • Angular 通用元标记在页面源中不可见

    当我查看在我的角度通用项目的构造函数中设置标题和元标记的页面时 标题显示在选项卡中 当我单击 检查元素 并转到时 我可以在 html 中看到元标记和标题到 html 文档的头部 但是 如果您仅单击 查看页面源代码 则不会显示标签 也不会显示
  • 自定义dateutil.parser世纪推理逻辑

    我正在处理具有两位数年份的旧文本文件 其中默认世纪逻辑dateutil parser似乎效果不太好 例如 珍珠港袭击事件并未发生dparser parse 12 7 41 返回 2041 12 7 回滚到 1900 年代的内置世纪 阈值 似
  • 左移 (<<) 是 C++11 中负整数未定义行为吗?

    左移是负数吗intC 11 中未定义的行为 这里的相关标准段落来自 5 8 2 E1 让我困惑的部分是 否则 如果 E1 具有有符号类型和非负值 且 E1 2E2 可以用结果类型表示 那么这就是结果值 否则 行为是未定义的 这是否应该被解释
  • 简单的iframe不显示在github页面上

    我定期嵌入iframes在我的 github io 页面中 但这个失败了 我不明白为什么 The iframe 嵌入此页面的多个位置 并且没有出现 https seinecle github io codapps generated htm
  • 从外部触发 Perfect 工作流程

    我目前有一个在 EC2 实例上本地运行的 Prefect 工作流程 我可以通过 UI 在 localhost 8080 上触发我的工作流程 有没有办法通过 REST API 或其他方式在外部触发 Prefect 工作流程 例如 AWS La
  • Errno 13,尝试读取文件时权限被拒绝

    我创建了一个小的 python 脚本 我正在尝试读取 txt 文件 但我的访问被拒绝 解决了 13 号错误 这是我的代码 import time import os destPath C Users PC Desktop New folde
  • Nancy 测试在其他程序集中找不到路线

    我有以下规格 使用 Machine Specifications 或 mSpec public class when a user logs in successfully static Browser browser static Bro
  • 通过 godaddy SMTP 发送电子邮件的正确设置是什么?

    我在电子邮件和 Office 下使用 GoDaddy 专业电子邮件 不是工作区电子邮件 对于我的网站 我想使用 PHPMailer 向用户发送电子邮件 我已根据 GoDaddy 电子邮件服务器信息使用了所有凭据 根据 GoDaddy 的说法
  • 如何制作一个可拉伸以适合包装物品的弹性盒容器? [复制]

    这个问题在这里已经有答案了 我想要一个flex direction column Flexbox 容器的宽度会增长以适合包含的元素 在此代码笔中 http codepen io justinmc pen ZYwWMz 灰色的 div 是 F
  • 排序规则问题 - SQL Server 2005

    我想了解我在 SQL Server 2005 实例上遇到的这个错误 错误如下 无法解决排序规则冲突 在 Latin1 General CI AI 和 SQL Latin1 General CP1 CI AI 中 等于操作 简单查询中包含的两
  • 列出通过 RFC 连接时允许的方法?

    我可以通过 SAP RFC 以用户 foo 和密码 bar 的身份从我的计算机连接到 SAP 服务器 是否可以通过 SAP RFC 进行自省 我想知道允许用户 foo 执行哪些方法 我正在使用 PyRFC 但据我所知 这对于这个问题来说应该
  • Qt 气球提示

    在我的 Qt 应用程序中 我想使用气球 气球提示 如Windows 用户体验指南 http msdn microsoft com en us library windows desktop dn742400 aspx 不是系统托盘气球 Qt
  • 如何从 React Native Navigator 中删除标题?

    我有一个标签栏导航器 水平滑动 并设置在屏幕底部 我希望该栏仅包含图标 没有标题 这是当前的设计 这是代码 const AppTabNavigator createMaterialTopTabNavigator Home screen Ho
  • 获取videoview下播放视频的进度时间?

    我需要获取 VideoView 中播放的视频的进度时间 即进度条左侧显示的时间 任何帮助将不胜感激 谢谢 您可以通过以下方式获取视频的持续时间mVideoView getDuration 最初将进度条设置为 0 然后通过以下方式获取视频的当
  • 如何在使用多线程时更新 aspx 页面

    我正在使用多线程来更新 显示页面内容 页面正在使用多个 和嵌套的 更新面板 现在 我正在使用以下logic更新页面 我有七个线程 每个线程通过查询数据库获取数据并将其显示在页面的特定部分 我们启动线程并等待 2 分钟 经过 2 分钟后 如果
  • 在 python 中绘制流数据的最轻量级方法

    为了让您了解我在寻找什么 它看起来像this http youtu be xMWIATas e0 t 1m37s 到目前为止 我已经使用 matplotlib 进行所有绘图 并且时间并不重要 它是在后处理中完成的 我想知道除了将数据向左移动
  • 以编程方式设置微调器文本颜色滞后、速度慢、瞬间颜色错误

    TLDR 我的微调器瞬间显示错误的颜色 我的旋转器有问题 每当我运行应用程序时 如果活动未缓存在内存中 它有时会滞后 在我可以将文本设置为正确的颜色之前 文本是默认颜色 如黑色 看起来确实很不专业 Video 请观看此屏幕录制以了解其实际效
  • 如何按第一个字符串对字符串对向量进行分组?

    我有一个包含字符串对的向量 vector