#include <iostream>
#include <set>
#include <cstdlib>
#include <ctime>
using namespace std;
class Data{
public:
int ID;
int Score;
Data(int ID,int Score):ID(ID),Score(Score){};
bool operator<(const Data &d) const{
return Score<d.Score;
}
};
int main(void)
{
multiset<Data> User;
srand((unsigned)time(NULL));
for(int i=0;i<20;i++)
User.insert(Data(i,rand()%1000));
for(multiset<Data>::iterator itr=User.begin();itr!=User.end();++itr)
cout << (*itr).ID << "," << (*itr).Score << endl;
return 0;
}
2007年09月01日
STL setのテンプレート引数にクラスを用いた実装例
イテレータにおける前置と後置
インクリメント演算子のオーバーロードをする場合、一般的な後置の実装は変更前の値のバックアップの記述を行う。
よってSTLコンテナでイテレータをインクリメントする場合、前置で書いたほうがパフォーマンス的に宜しい。
特に非PODにおいては、コピーコンストラクタなどで例外が発生する恐れもあるので尚のこと。
よってSTLコンテナでイテレータをインクリメントする場合、前置で書いたほうがパフォーマンス的に宜しい。
特に非PODにおいては、コピーコンストラクタなどで例外が発生する恐れもあるので尚のこと。