使用stl map的operator []时android ndk崩溃

时间:2013-03-18 07:01:51

标签: android c++ map stl android-ndk

我有一张地图:map < int64_t, Item* > m_items;

使用m_items[one_id]时,我的应用程序崩溃了。 但如果我使用map<int64_t, Item*>::iterator iter = m_items.find(one_id),那就没关系。

如果我需要添加项目,我必须使用:m_items.insert(make_pair(one_id, one_item));

为什么会这样?

1 个答案:

答案 0 :(得分:2)

你知道你正在使用什么版本的gcc吗? 如果它是gcc 4.5或更早版本gcc中的这个错误导致Boost的无序地图的[]运算符无法正常运行:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40145 也许你会看到类似的东西。

如果是gcc 4.6我不确定,但是C ++ 11 at()方法可供你使用,它有点慢,但它比find更快。 http://www.cplusplus.com/reference/map/map/at/