1. 程式人生 > >關於stable_sort()和sort()的區別

關於stable_sort()和sort()的區別

你發現有sort和stable_sort,還有 partition 和stable_partition, 感到奇怪吧。其中的區別是,帶有stable的函式可保證相等元素的原本相對次序在排序後保持不變。或許你會問,既然相等,你還管他相對位置呢,也分不清 楚誰是誰了?這裡需要弄清楚一個問題,這裡的相等,是指你提供的函式表示兩個元素相等,並不一定是一摸一樣的元素。

例如,如果你寫一個比較函式:

bool less_len(const string &str1, const string &str2)
{
        return str1.length() < str2.length();
}

此時,"apples" 和 "winter" 就是相等的,如果在"apples" 出現在"winter"前面,用帶stable的函式排序後,他們的次序一定不變,如果你使用的是不帶"stable"的函式排序,那麼排序完 後,"winter"有可能在"apples"的前面。