// vector を並べ替え(降順) // algorithm の sort を使用(降順用に関数オブジェクト生成) #include <iostream> #include <algorithm> #include <vector> using namespace std; // 降順を判断するための関数オブジェクト // 第1引数が第2引数より大きいときのみ 真 // (*) a >= b ; ではダメです。 // sortの仕様( foo(a,b) == foo(b,a) が成立したらダメ) bool greater( const int &a, const int &b ) { return a > b ; } int main( ) { cout << "[vector10] sort(降順) vector" << endl ; vector<int> iVec; cout << "vector size = " << iVec.size( ) << endl ; iVec.push_back( 7 ); iVec.push_back( 9 ); iVec.push_back( 8 ); cout << "vector size = " << iVec.size( ) << endl ; for ( vector<int>::iterator i = iVec.begin( ) ; i != iVec.end( ) ; i++ ) { cout << *i << endl ; } vector<int>::iterator first = iVec.begin( ); vector<int>::iterator last = iVec.end( ); sort( first, last, greater ); cout << "vector size = " << iVec.size( ) << endl ; for ( i = iVec.begin( ) ; i != iVec.end( ) ; i++ ) { cout << *i << endl ; } cout << "size( ) = " << iVec.size( ) << endl ; cout << "max_size( ) = " << iVec.max_size( ) << endl ; cout << "capacity( ) = " << iVec.capacity( ) << endl ; return 0; } // 比較条件を変えたい場合は、自分で関数オブジェクトを作成すれば // よい。 // end of file