In file included from /usr/include/c++/7/bits/stl_algobase.h:71:0,
from /usr/include/c++/7/bits/char_traits.h:39,
from /usr/include/c++/7/ios:40,
from /usr/include/c++/7/ostream:38,
from /usr/include/c++/7/iostream:39,
from /root/Desktop/proj08_main.cpp:2:
/usr/include/c++/7/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Iter_pred<_Predicate>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >; _Predicate = std::__cxx11::basic_string<char>]’:
/usr/include/c++/7/bits/stl_algo.h:120:14: required from ‘_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >; _Predicate = __gnu_cxx::__ops::_Iter_pred<std::__cxx11::basic_string<char> >]’
/usr/include/c++/7/bits/stl_algo.h:161:23: required from ‘_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >; _Predicate = __gnu_cxx::__ops::_Iter_pred<std::__cxx11::basic_string<char> >]’
/usr/include/c++/7/bits/stl_algo.h:3932:28: required from ‘_IIter std::find_if(_IIter, _IIter, _Predicate) [with _IIter = __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >; _Predicate = std::__cxx11::basic_string<char>]’
/usr/include/c++/7/bits/stl_algo.h:526:47: required from ‘bool std::none_of(_IIter, _IIter, _Predicate) [with _IIter = __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >; _Predicate = std::__cxx11::basic_string<char>]’
/root/Desktop/proj08_market.cpp:116:79: required from here
/usr/include/c++/7/bits/predefined_ops.h:283:11: error: no match for call to ‘(std::__cxx11::basic_string<char>) (std::__cxx11::basic_string<char>&)’
{ return bool(_M_pred(*__it)); }
^~~~~~~~~~~~~~~~~~~~
我已经检查了我的代码的每一行,我已经搜索到了所有地方,但我仍然无法找到导致此错误的原因。
答案 0 :(得分:1)
它表示您将std::string
作为第3个参数传递给std::none_of
。而第三个参数必须是谓词函数。例如。你有这个:
std::vector<std::string> v;
std::string s;
std::none_of(v.begin(), v.end(), s);
修正:
std::vector<std::string> v;
std::string s;
std::none_of(v.begin(), v.end(), [&s](std::string const& elem) { return s == elem; });