我是C++的新手,我想弄清楚如何使用字符串在列表中查找结构。

我有一个这样的结构:

struct entrada {
  string token;
  string lexema;
  string tipo;
};

和 list :
list<entrada> simbolos;

在“simbolos”中插入一些“entrada”

假设我要搜索具有特定“词法”的“entrada”,然后删除其他字符串。有没有简单的方法可以做到这一点?像函数之类的东西。我用while / for做的,但这不是我想做的。

最佳答案

根据您的评论,以下代码片段向您展示了一种使用STL std::find_if 中的算法将元素搜索到容器中的简单方法。

auto match = std::find_if(simbols.cbegin(), simbols.cend(), [] (const entrada& s) {
  return s.lexema == "2";
});

if (match != simbols.cend()) {
  std::cout << match->token << '\n'
            << match->lexema << '\n'
            << match->tipo << '\n';
}

Live Demo

至少需要C++ 11。

08-29 01:01