使用vector和struct在C++中获取错误

Prv*_*dav 3 c++ algorithm struct vector

这段代码中的错误是什么:

    #include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct symtab{
  string name;
  string location;
};
vector<symtab> symtab_details;

bool search_symtab(string s){

  if (find (symtab_details.begin(), symtab_details.end(), s)!=symtab_details.end()) return true;
  return false;
}


int main() {

    bool get = search_symtab("ADD");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

usr/include/c ++/4.8.2/bits/stl_algo.h:166:17:错误:不匹配'operator =='(操作数类型是'symtab'和'const std :: basic_string')if(*__ first == __val)

R S*_*ahu 8

您正在试图找到一个std::string,"ADD"在一个std::vector<symtab>.当然那不行.

你需要的是什么std::find_if.

auto it = std::find_if(symtab_details.begin(),
                       symtab_details.end(),
                       [&s](symtab const& item) { return item.name == s; });
return  (it != symtab_details.end());
Run Code Online (Sandbox Code Playgroud)