2012-04-19 119 views
1

我已經矢量的矢量,如下所示:排序矢量[I] [0]

vector< vector<int> > intervals; 

基本上,我需要排序的矢量,使用STL的sort(),但我需要進行排序'間隔',間隔[i] [0]。所以,通過每個對象的[0]元素對矢量對象進行排序。

我該怎麼做?先謝謝你。

+0

難道你不只是使用'map >'你的關鍵字是'vector [0]'嗎? – EdChum 2012-04-19 19:47:33

回答

7

std::sort將對象的比較器函數作爲第三個參數,因此您可以定義一個小於運算符,該運算符需要兩個向量並比較它們的第一個元素。

bool foo(const std::vector<int>& a, const std::vector<int>& b) { 
    // in real life you may want to check vectors aren't empty. 
    // in real life you wouldn't call this foo either. 
    return a[0]<b[0]; 
} 

int main() { 
    std::vector<std::vector<int>> v = ...; 
    std::sort(v.begin(), v.end(), foo); 
} 
+1

我不會使用'foo'作爲比較函數的名稱,但除此之外,這是實現它的方法。 – 2012-04-19 19:59:05

+0

@MarkRansom我也不會!指出。 – juanchopanza 2012-04-19 20:01:18