与(C )无匹配函数
No matching function to (C++)
我正在尝试从向量中的键盘(其中元素来自结构)中找到一个数据。而且我对此错误消息感到疯狂。这是我的代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
struct item {
string code;
string name;
string brand;
int price;
};
vector<item> vstr;
int main(){
vstr.push_back({"NK-001", "Nikon D3100", "Nikon", 200});
vstr.push_back({"NK-002", "Nikon D3200", "Nikon", 400});
vstr.push_back({"NK-003", "Nikon D3300", "Nikon", 350});
string keywd = "NK-001";
auto f = find(begin(vstr), end(vstr), keywd);
if(f!= end(vstr)){
cout << "Data Found";
}
else {
cout << "Data Not Found";
}
}
欢迎任何建议和帮助。预先感谢:)
编辑
所以这是错误消息:
D:Tugas KuliahAlgoritma dan PemrogramanTugas Kelompok>g++ -std=c++11 coba.cpp -o coba
In file included from c:mingwlibgccmingw326.3.0includec++bitsstl_algobase.h:71:0,
from c:mingwlibgccmingw326.3.0includec++bitschar_traits.h:39,
from c:mingwlibgccmingw326.3.0includec++ios:40,
from c:mingwlibgccmingw326.3.0includec++ostream:38,
from c:mingwlibgccmingw326.3.0includec++iostream:39,
from coba.cpp:1:
c:mingwlibgccmingw326.3.0includec++bitspredefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_equals_val<_Value>::operator()(_Iterator) [with _Iterator = __gnu_cxx::__normal_iterator<item*, std::vector<item> >; _Value = const std::__cxx11::basic_string<char>]':
c:mingwlibgccmingw326.3.0includec++bitsstl_algo.h:120:14: required from '_RandomAccessIterator std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<item*, std::vector<item> >; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const std::__cxx11::basic_string<char> >]'
c:mingwlibgccmingw326.3.0includec++bitsstl_algo.h:161:23: required from '_Iterator std::__find_if(_Iterator, _Iterator, _Predicate) [with _Iterator = __gnu_cxx::__normal_iterator<item*, std::vector<item> >; _Predicate = __gnu_cxx::__ops::_Iter_equals_val<const std::__cxx11::basic_string<char> >]'
c:mingwlibgccmingw326.3.0includec++bitsstl_algo.h:3792:28: required from '_IIter std::find(_IIter, _IIter, const _Tp&) [with _IIter = __gnu_cxx::__normal_iterator<item*, std::vector<item> >; _Tp = std::__cxx11::basic_string<char>]'
coba.cpp:24:47: required from here
c:mingwlibgccmingw326.3.0includec++bitspredefined_ops.h:194:17: error: no match for 'operator==' (operand types are 'item' and 'const std::__cxx11::basic_string<char>')
{ return *__it == _M_value; }
整个过程是您需要从std::find
切换到std::find_if
:
const auto it = std::find_if(std::cbegin(vstr), std::cend(vstr),
[&keywd](const auto& item) {
return item.code == keywd;
});
由于您无法直接比较item
和std::string
。
demo
相关文章:
- Rcpp并行无匹配函数,用于调用"转换"
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- 无匹配函数呼叫getline()
- C 线程 - 无匹配函数供呼叫
- 错误代码:无匹配函数供呼叫
- 子类/超类的"无匹配函数调用"
- 无匹配函数呼叫
- 与(C )无匹配函数
- 无匹配函数呼叫
- 无匹配函数呼叫(类,C )
- C 11无匹配函数,可以呼叫'std :: vector
- 对矢量对:无匹配函数
- C 在较旧的JSON :: NLOHMANN库中使用push_back时无匹配函数
- std::查找"错误无匹配函数"
- C 错误无匹配函数
- 将STD向量作为参考:无匹配函数要呼叫
- C :Tusing Boost Unordered_map错误:无匹配函数调用
- C 无匹配函数供呼叫:传递迭代器
- C 无匹配函数用于呼叫错误(默认为参考通过)
- LibXML2 xmlGetProp() - 无匹配函数