C++ Primer 答客問 (53) - comparison operatio …
C++ Primer 答客問 (53) - comparison operations of pair
侯捷 jjhou@ccca.nctu.edu.tw
2000.07.09 第一次發表於
清大.楓橋驛站(140.114.87.5).電腦書訊版(Computer/CompBook)
本文將於日後整理於 侯捷網站/侯捷譯作/C++ Primer 中文版/答客問
侯捷網站:www.jjhou.com
----------------------------------------------------------------
allan wrote (2000/07/08) :
> 侯老師:
> 請問您,如果我要在 vector 之中放置 pair,pair 由 int 和 string
> 構成,請問如何排序?
> 謝謝。
侯捷回覆:
pair 本身有 comparison operations. 所以直接使用 sort() 即可。
下面是個例子:
#include <utility>
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print_element(pair<int, string> p)
{
cout << '<'
<< p.first
<< ','
<< p.second
<< '>'
<< endl;
}
int main()
{
pair<int, string> pair1, pair2, pair3;
pair1 = make_pair(16, "jjhou");
pair2 = make_pair(29, "jason");
pair3 = make_pair(15, "who");
// 測試 pair 有 comparison operations
cout << (pair1 < pair2); // 1 (true)
cout << (pair1 < pair3); // 0 (false)
cout << (pair2 < pair3); // 0 (false)
cout << endl;
vector< pair<int, string> > vec;
vec.push_back(pair1);
vec.push_back(pair2);
vec.push_back(pair3);
for_each(vec.begin(), vec.end(), print_element );
// <16,jjhou>
// <29,jason>
// <15,who>
sort(vec.begin(), vec.end());
for_each(vec.begin(), vec.end(), print_element );
// <15,who>
// <16,jjhou>
// <29,jason>
}
-- the end
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@ccca.nctu.edu.tw
CompBook 近期熱門文章
PTT數位生活區 即時熱門文章