首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >擦除std::向量的std::对std::string

擦除std::向量的std::对std::string
EN

Stack Overflow用户
提问于 2022-10-21 08:41:40
回答 1查看 112关注 0票数 0

我有一个std::vector of std::pair of std::string,其中的语言和翻译是价值。这些是我的对向量中的值。

代码语言:javascript
运行
复制
 0. {English, Love},  
 1. {Spanish, Amor},  
 2. {Tagalog, Mahal},  
 3. {English, Love}

我想要做的是只删除索引3,但是在我的代码中,如果我试图删除索引3,那么索引03都会被删除。

这是我的密码:

代码语言:javascript
运行
复制
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <utility>

auto main() -> int {

  using pair_of = std::vector<std::pair<std::string, std::string>>;
  using str_pair = std::pair<std::string, std::string>;

  pair_of language_translation{};

  language_translation.emplace_back(std::make_pair("English", "Love"));
  language_translation.emplace_back(std::make_pair("Spanish", "Amor"));
  language_translation.emplace_back(std::make_pair("Tagalog", "Mahal"));
  language_translation.emplace_back(std::make_pair("English", "Love"));

  std::string language{"English"};
  std::string translation{"Love"};

  auto selected_pair = std::remove_if(
    language_translation.begin(), language_translation.end(),
    [&](const str_pair &data_pair) {
      if(data_pair.first == language && data_pair.second == translation) {
        return true; 
      }
      else {
        return false;
      }
    }
  );
  
  language_translation.erase(selected_pair, language_translation.end());
  
  for(const auto &pair : language_translation) {
    std::cout << pair.first << ": " << pair.second << std::endl;
  }

}

输出结果是

代码语言:javascript
运行
复制
Tagalog: Mahal
Spanish: Amor

我还能用什么算法来解决这样的问题呢?你们能举个例子吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 08:50:54

要删除by索引,可以执行以下操作:

代码语言:javascript
运行
复制
language_translation.erase(std::next(language_translation.begin(), index));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74151009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档