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