// sort start typedef struct{ ... }Node; // Map的键是字符串,值是结构体。虽然有自动排序特性,但是按字符串的排序并不能符合要求。此时,Map的key可以视为已经有序,将其转化为int存入数组,然后对数组排序。 // 考虑到键是唯一的,所以先转为整型,再去Map中查找和字符串对应的Key值 std::map<std::string, Node>::iterator ite = map1.begin(); std::vector<int> tmpVecInt; stringstream ss; int tmpInt=0; for(;iter != map1.end();++iter){ ss.clear(); ss.str(""); ss<<iter->first; ss>>tmpInt; tmpVecInt.push_back(tmpInt); } sort(tmpVecInt.begin(),tmpVecInt.end()); // sort end std::vector<int>::iterator indexIterInt=tmpVecInt.begin(); std::string strkey; for(; indexIterInt != tmpVecInt.end(); indexIterInt++) { ss.clear(); ss.str(""); ss<< *indexIterInt; // 整型转化为字符串 ss>>strkey; // 可以省,下面直接用ss.c_str()即可 iterTests=tmpSite.tests.find(strkey.c_str()); cout<< iterTests->second.id << endl; }