stable_sort()可以对vector的某个成员进行排序,而且可保证相等元素的原本相对次序在排序后保持不变。
下面是该函数的实现方法代码:
#include <iostream>#include<math.h>#include <string>#include <vector>#include <iterator>#include <algorithm>using namespace std;typedef struct TagNode{ int value; int index;}Node;bool myCmp(const Node& a, const Node& b){ return a.value < b.value;}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); } stable_sort(vtNode.begin(), vtNode.end(), myCmp); 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
输出:
Index Value:
6 1
4 3
3 6
5 8
2 34
8 45
9 66
10 88
1 98
7 100
11 202
新闻热点
疑难解答
图片精选