sort()可以对vector的某个成员进行排序,但是不可保证相等元素的原本相对次序在排序后保持不变。
下面为该函数的实现方法,其大致的程序思路参考C++之stable_sort()的方法。
#include <iostream> #include<math.h> #include <string> #include <vector> #include <iterator> #include <algorithm> using namespace std; typedef struct TagNode { int value; int index; }Node; int main(int argc, char **argv) { vector<Node> vtNode; vtNode.clear(); Node tmp; int idx = 0, num; while(cin >> num && num) { ++idx; tmp.value = num; tmp.index = idx; vtNode.push_back(tmp); } sort(vtNode.begin(), vtNode.end()); cout << "Index\tValue:" << endl; vector<Node>::iterator pos; for(pos = vtNode.begin(); pos != vtNode.end(); ++pos) { cout << pos->index << "\t" << pos->value << endl; } return 0; }
其结果如下:
输入:98 34 6 3 8 1 100 45 66 88 202 3 8 5 8
输出:
Index Value:
6 1
4 3
12 3
14 5
3 6
5 8
13 8
15 8
2 34
8 45
9 66
10 88
1 98
7 100
11 202