Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;映射没有匹配的成员函数用于调用';查找';当用于字符串时_C++_String_Algorithm_Dictionary_Find - Fatal编程技术网

C++ C++;映射没有匹配的成员函数用于调用';查找';当用于字符串时

C++ C++;映射没有匹配的成员函数用于调用';查找';当用于字符串时,c++,string,algorithm,dictionary,find,C++,String,Algorithm,Dictionary,Find,当我尝试对映射数据类型使用find函数时,我发现了以下错误,而不是我所缺少的 错误 #包括 #包括 #包括 类解决方案{ 公众: bool是有效的(字符串s){ int l=s.长度(); 地图b; b[“(“]=”); b[“{”]=“}”; b[“[”]=“]”; 载体br; 如果(l%2==1) 返回false; 否则{ 对于(int i=0;i0){ 如果(br.rbegin()==s[i]){ br.向后弹出(); } 类std::map的成员函数find的参数类型是const std

当我尝试对映射数据类型使用find函数时,我发现了以下错误,而不是我所缺少的

错误

#包括
#包括
#包括
类解决方案{
公众:
bool是有效的(字符串s){
int l=s.长度();
地图b;
b[“(“]=”);
b[“{”]=“}”;
b[“[”]=“]”;
载体br;
如果(l%2==1)
返回false;
否则{
对于(int i=0;i0){
如果(br.rbegin()==s[i]){
br.向后弹出();
}

std::map
的成员函数
find
的参数类型是
const std::string&
。 但是,您使用的是char类型的参数,并且没有从char类型到std::string类型的隐式转换

auto it = b.find(s[i]);
因此,您需要显式地将参数转换为类型
std::string
,或者提供一个可以隐式转换为类型std::string的对象

例如,在上面的调用之前,您可以声明一个字符数组,如

const char item[] = { s[i], '\0' };
然后写

auto it = b.find( item );
或者如果没有辅助字符数组,您可以直接编写

auto it = b.find( std::string ( 1, s[i]) );
在任何情况下,都不清楚为什么要使用类型
std::map
而不是
std::map

请注意,您的代码还有其他错误

例如在这句话中

if(br.rbegin() == s[i]){
试图将迭代器与char类型的对象进行比较

也许你指的是这种类型的向量

vector<char> br;
vector<string> br;

s[i]
是包含字符串的映射的
char
find()
如果(br.rbegin()==s[i])
不去做你认为它是做的事情,或者它甚至不会编译。我投票关闭,因为一个输入错误(或多个)。与Python不同的是,
'a'
“a”
是相同的东西,单个字符(
'a'
)与单个字符串(
'a“
)不同在C++中,看起来你实际上想要的是一个<代码> map <代码>。嘿,我最初使用了一个地图,但是当我尝试使用从字符串s’中键索引的映射的find方法时,它显示了一个不同的错误,所以我改变了映射类型。谢谢最初的修复@ VladfromMoscow。
vector<char> br;
vector<string> br;
if( *br.rbegin() == s[i]){