我是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。