我已經矢量的矢量,如下所示:排序矢量[I] [0]
vector< vector<int> > intervals;
基本上,我需要排序的矢量,使用STL的sort(),但我需要進行排序'間隔',間隔[i] [0]。所以,通過每個對象的[0]元素對矢量對象進行排序。
我該怎麼做?先謝謝你。
我已經矢量的矢量,如下所示:排序矢量[I] [0]
vector< vector<int> > intervals;
基本上,我需要排序的矢量,使用STL的sort(),但我需要進行排序'間隔',間隔[i] [0]。所以,通過每個對象的[0]元素對矢量對象進行排序。
我該怎麼做?先謝謝你。
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);
}
我不會使用'foo'作爲比較函數的名稱,但除此之外,這是實現它的方法。 – 2012-04-19 19:59:05
@MarkRansom我也不會!指出。 – juanchopanza 2012-04-19 20:01:18
難道你不只是使用'map>'你的關鍵字是'vector [0]'嗎? –
EdChum
2012-04-19 19:47:33