最終更新日 2008年02月07日
up
top
STLのvectorに構造体を突っ込んだときのソート
STL(Standart Template Liblary)のvectorに構造体を突っ込んだときに、
その構造体のメンバでソートを行う方法。判ってしまえば簡単なのだけど、
ネットで結構苦労してやっと判明したので。
#include
#include
#include
#include
#include
using namespace std;
// 構造体の定義
struct FI {
string path;
string name;
int size;
};
// vectorの定義
std::vector vec;
// 評価関数
bool name_asc( const FI& left, const FI& right ) {
return left.name < right.name;
}
bool name_desc( const FI& left, const FI& right ) {
return left.name > right.name;
}
int main( int argc, char* argv[] ) {
FI *fi = new FI;
fi->path = "/bin/abc";
fi->name = "abc";
fi->size = 1024;
vec.push_back( *fi );
fi->path = "/bin/def";
fi->name = "def";
fi->size = 2048;
vec.push_back( *fi );
fi->path = "/bin/ghi";
fi->name = "ghi";
fi->size = 4096;
vec.push_back( *fi );
// ソート
std::sort( vec.begin(), vec.end(), name_desc );
// 表示
for ( int i = 0; i < vec.size(); i ++ ) {
puts( vec[i].name.c_str() );
}
return 0;
}