关于Map、vector、Array 容器的使用

我定义了一个cocos2d::Map<std::string, cocos2d::Array>,并插入了一些成员。
定义了一个std::vectorstd::string来放获得的所有key map.keys()。
程序在win32上运行没什么问题,编译成Android运行到使用这些容器的时候闪退。
PS: 最特么烦PC上正常手机上不正常的问题,对于我来说这样debug太难了

于是把程序拆了慢慢调试:
Map插入的数据:
pokerMap.insert(“1”, pokerArrA);
pokerMap.insert(“2”, pokerArrB);
pokerMap.insert(“3”, pokerArrC);
pokerMap.insert(“4”, pokerArrD);
pokerMap.insert(“5”, pokerArrE);
pokerMap.insert(“6”, pokerArrF);
pokerMap.insert(“7”, pokerArrG);
pokerMap.insert(“8”, pokerArrH);
pokerMap.insert(“9”, pokerArrI);
pokerMap.insert(“10”, pokerArrJ);
pokerMap.insert(“11”, pokerArrK);
pokerMap.insert(“12”, pokerArrL);
pokerMap.insert(“13”, pokerArrM);
pokerMap.insert(“14”, pokerArrN);
pokerMap.insert(“15”, pokerArrO);

注:allKeys是std::vectorstd::string类型(pokerMap.keys()获取的)
for (int i = 0; i < allKeys.size(); i++)
{
auto str = allKeys.at(i);
auto label = LabelTTF::create();
label->setString(str);
label->setFontSize(20.0f);
label->setPosition(Vec2(50+i * 30, winSize.height / 1.8f));
this->addChild(label);
}

Windows和Android执行结果如图:
vector的储存顺序居然是不同的

序列都不是按照insert的顺序

cocos2d::Map 是unordered_map吧,本来insert的顺序就不表示存的顺序吧,map是靠key来找value的,不是按位置。如果你想顺序排列就用vector不要用map