删除结构 C++ 向量中的重复项

2024-01-11

我有以下结构。我想将结构存储在向量中。其次我想删除 (context)。我究竟做错了什么?


#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//Structure
struct contextElement
{
  string context;
  float x;
};

int main()
{
  vector<contextElement> v1;
  v1.push_back({"1",1.0});
  v1.push_back({"2",2.0});
  v1.push_back({"1",1.0});
  v1.push_back({"1",1.0});
  //ERROR here
  auto comp = [] ( const contextElement& lhs, const contextElement& rhs ) {return lhs.context == rhs.context;};
  //Remove elements that have the same context
  v1.erase(std::unique(v1.begin(), v1.end(),comp));
  for(size_t i = 0; i < v1.size();i++)
  {
    cout << v1[i].context <<"  ";
  }
  cout << endl;
  return 0;
}

Error:

main.cpp|23|错误:没有匹配的函数可供调用 'std::vector::erase(__gnu_cxx::__normal_iterator >, std::vector::iterator, main()::__lambda0&)'|


可能的解决方案

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//Structure
struct contextElement
{
  string context;
  float x;
};

int main()
{
  vector<contextElement> v1;
  v1.push_back({"1",1.0});
  v1.push_back({"2",2.0});
  v1.push_back({"1",1.0});
  v1.push_back({"1",1.0});
  //sort elements@HaniGoc: unique only removes consecutive duplicates. If you want to move all //duplicates, then either sort it first, or do something more complicated. –  Mike Seymour
  auto comp = [] ( const contextElement& lhs, const contextElement& rhs ) {return lhs.context < rhs.context;};
  sort(v1.begin(), v1.end(),comp);

  auto comp1 = [] ( const contextElement& lhs, const contextElement& rhs ) {return lhs.context == rhs.context;};
  auto last = std::unique(v1.begin(), v1.end(),comp1);
  v1.erase(last, v1.end());

  for(size_t i = 0; i < v1.size();i++)
  {
    cout << v1[i].context <<"  ";
  }
  return 0;
}

vector::erase()不采用谓词。你的谓词std::unique应该检查是否相等。

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

删除结构 C++ 向量中的重复项 的相关文章

随机推荐

  • 使用 ggplot 或 R 中的任何其他方法根据计数绘制线宽(大小)

    我有一个长格式的数据集 每个ID 走 3步 每一步 变量名称是step 可以降落在不同的位置 变量名称是里程碑 我想绘制所有路径 因为有一些路径的行进次数较多 所以我想让路径的宽度 大小 与其计数成正比 我想象它是这样的geom line
  • 移动浏览器检测和格式化的最佳实践

    我为一位希望可以通过移动设备轻松访问的客户开设了一个小型网上商店 如何检测用户是否通过移动设备浏览我的网站 当我这样做之后 我应该 检查用户是否有移动设备 然后将其转发到另一个站点 我认为优点是 我可以优化两个网站的屏幕尺寸布局 我可以在两
  • Facebook API 密钥?与应用程序 ID 相同吗?

    我已经通过 facebook 为我的网站设置了一个应用程序 与我在网络上看到的显示 API 密钥的其他屏幕截图不同 我没有 我显示的只是 应用程序 ID 后面跟着 应用程序秘密 所以想知道应用程序 ID 是否与 API 密钥相同 因为我正在
  • 在 Swift 中制作简单的淡入淡出动画?

    我正在尝试用 Swift 制作一个简单的动画 这是淡入 我尝试过 self myFirstLabel alpha 0 self myFirstButton alpha 0 self mySecondButton alpha 0 然后 我有
  • 将 Post 或 PostAndAsyncReply 与 F# 的 MailboxProcessor 一起使用吗?

    我见过不同的片段展示了Put返回的消息unit与 F 的MailboxProcessor 在某些情况下 仅Post方法被使用而其他人使用PostAndAsyncReply 一旦消息被处理 回复通道立即回复 在进行一些测试时 我发现等待回复时
  • Android Wear 设备选择框显示“offline localhost:4444 minSdk (API 20) > deviceSdk (API 1)”

    我正在尝试构建 Android Wear 应用程序 如果我将 minsdk 设置为 20 21 它给出了下面的错误 但如果我将其设置为 19 则会出现以下错误 home bhupinder AndroidStudioProjects MyW
  • 如何通过每种颜色的分数贡献在 n 种颜色之间进行插值?

    我怎样才能在n种颜色之间进行插值 2种颜色的简单情况 首先考虑一个更简单的情况 我们想要找到两种颜色的中点 Color1 is RGB 255 0 0 Red Color2 is RGB 128 128 128 Grey 解决方案是单独考虑
  • 如何向用户实施有限的功能推出(与语言无关)?

    我想知道向选定的用户群推出新网站功能的一些常见或最佳实践 例如 用户可以仅基于总体用户群的百分比 10 部署应该是可定制的 可配置的 并支持任意数量的功能 将部署与特定用户角色或权限 ACL 相关联也很有用 那么 从本质上讲 什么是能够很好
  • @font-face 不起作用

    我下载了一个字体inlove light wf ttf 为了使用该规则 font face 我的文件夹中有 home html and inlove light wf ttf 在我的 CSS 中我有 font face font famil
  • 如何测试“Mosquitto”服务器?

    我是新来的Mosquitto and MQTT 我下载了Mosquitto服务器库 但我不知道如何测试它 有什么办法可以测试一下Mosquitto server 在单独的终端窗口中执行以下操作 启动代理 mosquitto 启动命令行订阅者
  • 我可以将实体字段名称映射到 TypeORM 中的别名列名称吗?

    我正在使用 TypeORM 从 Rails 迁移到 NestJs 由于历史原因 Rails 中的表名和列名是snaked cased 我不想将这种麻烦复制到我们的 NestJs React 端 我可以在 NestJS typeorm 中创建
  • 使用新范围更新 Google 工作表“过滤器视图”

    我有一个电子表格 其中设置了各种过滤器视图 通常这很有效 但偶尔会添加新行 我必须手动更新每个过滤器视图中的范围 我尝试在线搜索解决方案 并提出了以下可能更新范围的代码 function UpdateFilterView var dataS
  • xcode4 工作区中的两个项目(#import 失败)

    我真的很难让它在 xcode 4 中工作 我有一个项目将在许多应用程序 网络 中重用 因此我创建一个工作区并添加我的两个项目 到目前为止 一切都很好 这就是失败的地方 import JSONRequest h 没有明显的原因 它自动完成头文
  • 在单个表列中存储多个位值

    我需要在数据库中存储某种一周中的日程安排 我可以在其中安排一周中的一天或多天的记录 假设它代表一个任务 我需要将其存储在一列中 以便于保存和检索 然后每天我都会选择时间表与本周的当前日期相匹配的记录 例如 获取时间表与第 7 周的日期相匹配
  • 内部矩阵尺寸必须一致

    我有一个矩阵A和一个向量x A是一个 50x30 矩阵 x是一个 1x30 向量 我想要倍增A by x 但每当我尝试z A x我收到错误Inner matrix dimensions must agree 然而 在列数相同的情况下 矩阵维
  • Elasticsearch Painless 计算嵌套元素的分数

    Note 我最初发布这个问题的方式有点不同 不值得更新 因为阅读后我学到了更多 要求 搜索文档并根据文档中的嵌套元素计算自定义分数 结构 mappings book properties title type string index no
  • 使用 gdb 中的函数调用堆栈进行导航

    在 Visual Studio 中 如果单击调用堆栈中的某个条目 则会打开编辑器并显示该函数的源代码 gdb 中可能有类似的东西吗 我在 gdb 中使用 tui 文本用户界面 是否可以让 tui 显示回溯中给定条目的源代码 如果没有 那么如
  • 如何在较新版本的 VS 中通过 UI 更改单元测试属性?

    几个月前 当我在使用 MSTest 进行单元测试时阅读有关数据源的内容时 我偶然发现了一些旧帖子 声称这只是进入属性并在 gui 上设置数据源的问题 这导致该属性与所需的参数一起自动添加到测试方法中 不过 我始终无法在属性网格上选择单元测试
  • 如何检查是否已为 VIRTUALENVWRAPPER_PYTHON=/usr/bin/python 等安装 virtualenvwrapper

    我正在遵循有关 Python 的 virtualenv 的指南 但遇到了一个小问题 Sahands MBP empty sahandzarrinkoub source usr local bin virtualenvwrapper sh u
  • 删除结构 C++ 向量中的重复项

    我有以下结构 我想将结构存储在向量中 其次我想删除 context 我究竟做错了什么 include