1. 程式人生 > >map自定義排序規則

map自定義排序規則

#include <iostream>
#include <map>
#include <string>
using namespace std;

struct comp
{
    bool operator()(const string &a, const string &b) const {
        if(a.length() == b.length())
            return a < b;
        if(a.length() < b.length()) {
            string
tmp; for(int i = 0; i < b.length()-a.length(); i++) tmp += "0"; return tmp+a < b; } string tmp; for(int i = 0; i < a.length()-b.length(); i++) tmp += "0"; return a< tmp+b; } //自定義map鍵值的排序規則,此處是為了讓string的比較得出int比較的效果
}; int main() { map<string,int, comp> m_map; m_map.insert(pair<string,int>("100", 1)); m_map.insert(pair<string,int>("10", 1)); m_map.insert(pair<string,int>("1", 1)); map<string,int>::iterator i; for(i = m_map.begin(); i != m_map.end(); i++) cout
<< i->first << " " << i->second << endl; //輸出順序為1 10 100 }