我有一个结构列表,如下所述:
struct Files
{
string id;
string path;
string chksum;
};
以及一个包含此结构列表的变量,该变量使用
id
、path
和chksum
字段描述文件列表。list<Files> myFiles;
我需要实现一个函数来搜索我的列表中是否存在已确定的文件名。
我试图使用
find_if
算法,但我得到了非常奇怪的错误,我不确定如何有效地实现这一点。string filename = "mytext.txt";
auto match = std::find_if(myFiles.cbegin(), myFiles.cend(), [] (const Files& s) {
return s.path == filename;
});
if (match != myFiles.cend())
{
cout << "omg my file was found!!! :D";
}
else
{
cout << "your file is not here :(";
}
最佳答案
您需要将filename
添加到lambda的捕获列表中:
string filename = "mytext.txt";
auto match = std::find_if(myFiles.cbegin(), myFiles.cend(), [filename] (const Files& s) {
return s.path == filename;
});
if (match != myFiles.cend())
{
cout << "omg my file was found!!! :D";
}
else
{
cout << "your file is not here :(";
}