原文:http://bbs.chinaunix.net/thread-1775533-1-1.html
// common01.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <map>
#include <unordered_map>
#include <algorithm>
using namespace std;
struct _tagName
{
TCHAR szName[50];
double dbasev;
};
void sort_map(unordered_map<tstring, _tagName> &map)
{
vector<_tagName> arName;
struct inner
{
static int my_cmp(_tagName &p1, _tagName &p2)
{
return p1.dbasev > p2.dbasev;
}
};
for (auto i : map)
{
arName.push_back(i.second);
}
sort(arName.begin(), arName.end(), inner::my_cmp);
map.clear();
for (auto i : arName)
map.insert(make_pair(i.szName, i));
}
int _tmain(int argc, _TCHAR* argv[])
{
unordered_map<tstring, _tagName> ium;
//_tagName name[] = { { _T("A"), 0.5 }, { _T("B"), 0.7 }, { _T("C"), 0.1 } };
double dbasev[] = { 0.5, 0.7, 0.1 };
LPCTSTR szName[] = { _T("A"), _T("B"), _T("C") };
for (long i = 0; i < _countof(dbasev); ++i)
{
_tagName name = { 0 };
name.dbasev = dbasev[i];
_tcscpy_s(name.szName, _countof(name.szName), szName[i]);
ium.insert(make_pair((tstring)(name.szName), name));
}
sort_map(ium);
return 0;
}