gpt4 book ai didi

c++ - 关于 map STL的问题

转载 作者:行者123 更新时间:2023-11-30 01:16:22 26 4
gpt4 key购买 nike

void huffmanDecode(string str){

string temp;
map<string, char>::iterator it;
//for(auto iter=myMap.begin();iter!=myMap.end();++iter)
//cout<<iter->first<<" "<<iter->second<<" "<<endl;

for (unsigned int i = 0; i < str.size(); i++)
{
temp += str[i];
it = myMap.find(temp);
if (it == myMap.end())
continue;
else
{
cout<<it->first<<" ";//crashed here, "Thread 1:EXC_BAD_ACCESS(code=1,address=0x0)
//cout << it->second << " ";
temp = nullptr;
}
}
}

我正在尝试通过 map 解决 huffmandecode 问题,但它崩溃了 ~~~

最佳答案

std::string::operator=有一个采用 const char* 的重载。这是您说时使用的重载

temp = nullptr;

现在,要求是 const char* 指向 null-terminated string .因此它不能是空指针。您不允许传递空指针,并且在这种情况下允许实现引发异常。在任何情况下,尝试使用这样的字符串都会导致未定义的行为std::string 构造函数也有类似情况。

如果您打算将 temp 重新设置为一个空字符串,您有几个选择:

temp = "";
temp.clear();
temp = std::string();

关于c++ - 关于 map STL的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26753123/

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