std::find在xutility C++中出现问题

std::find is having issues in xutility C++

本文关键字:问题 xutility find std C++      更新时间:2023-10-16

在我的程序中,我有一个看起来像的函数

bool InstalledProgram::IsProgInList(String^ ProgramName, list<InstalledProgram> ListCheck) {
if (find(ListCheck.begin(), ListCheck.end(), ProgramName) != ListCheck.end()) {
    return true;
}
else {
    return false;
}

}

当我去调试整个东西时,我得到了

 C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility(3045) : see reference to function template instantiation '_InIt std::_Find<_InIt,_Ty>(_InIt,_InIt,const _Ty &,std::false_type)' being compiled
    with
      [
          _InIt=std::_List_unchecked_iterator<std::_List_val<std::_List_simple_types<InstalledProgram>>>,  
          _Ty=System::String ^
     ]

它不会告诉我任何关于我实际代码文件的信息,但这是我唯一使用find的地方,所以它必须在这里。我花了一段时间试图绕过这一点,现在运气不错。有人看到问题了吗?我知道ProgramName应该是String^ const &_Val,但我不确定我是否理解这意味着什么以及它有什么不同。

容器ListCheck包含InstalledProgram类型的对象,但您正在搜索String^c++-cli)类型的元素

您可能需要定义一个自定义的一元谓词并使用std::find_if