gpt4 book ai didi

c++ - 在 C++ STL 中搜索映射中的键时,出现以下错误

转载 作者:行者123 更新时间:2023-11-30 01:34:09 25 4
gpt4 key购买 nike

我创建了一个 Map,其键为字符串类型,关联值存储在 vector 中。现在我有一个字符串,需要检查字符串中的每个字符是否作为键出现在映射中。

#include <iostream>
#include <stdlib.h>
#include <vector>
#include <map>
#include <string>
using namespace std;

int main() {
map<string, vector<string>> umap;
umap["1"] = {"a","b","c"};
umap["2"] = {"d","e","f"};
string s = "23";
for(int i=0; i<s.length(); i++) {
if(umap.find(s[i]) != umap.end())
cout<<"Present"<<endl;
else
cout<<"Not Present"<<endl;
}
}

错误:

main.cpp: In function ‘int main()’:
main.cpp:15:26: error: no matching function for call to ‘std::map<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >::find(__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type&)’
if(umap.find(s[i]) != umap.end())

最佳答案

错误可能有点神秘。让我们将其翻译成人类可读的内容。

main.cpp: In function ‘int main()’:
main.cpp:15:26: error: no matching function for call to ‘std::map<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >::find(__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type&)’
if(umap.find(s[i]) != umap.end())

第一个std::__cxx11::basic_string<char>是表示 std::string 的复杂方式.那么__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type&是一种更复杂的方式来表示 s[i] 的返回类型这实际上只是 char& .把这些放在一起我们得到

main.cpp: In function ‘int main()’:
main.cpp:15:26: error: no matching function for call to ‘std::map<std::string, std::vector<std::string> >::find(char&)’
if(umap.find(s[i]) != umap.end())

我希望现在您可以看到错误提示没有 find 的过载这需要 char&作为参数。

相反,您应该传递 std::string ,例如通过 s.substr(i,1) .

关于c++ - 在 C++ STL 中搜索映射中的键时,出现以下错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com