我在头文件中的一个类中定义了一个映射,如下所示:
std::map<int, char> mCompletedIds;
我可以在这里使用 vector ,因为我只需要存储已完成的 ID。但是为了快速找到,我正在使用 map 。所以,我总是将 pair 的第二个参数设置为 0。
现在,在其中一个 fns 中。类,我正在查找。
std::map<int, char>::iterator it = mCompletedIds.find(id); //id is defined above
在这个声明中,我得到了 SIGBUS。是因为 map 现在是空的吗?谁能请。帮助我了解原因。
谢谢, 上海
最佳答案
如果您只想存储数字,可以使用 std::set<int>
查看一个值是否存在使用
std::set<int> mCompletedIds;
bool found = mCompletedIds.count(id) != 0;
您的 SIGBUS 错误通常是由对齐错误或代码中发生的其他一些损坏以及 valgrind 等工具引起的可能会告诉你真正的错误在哪里。
关于c++ - std::map.find 上的 Sigbus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861302/