Tupleが要素のコンテナの整列

tuple_comparison.hpp のインクルードが必要みたい。うむむ。こういうの調べるの大変*1C++好きくないわぁ。

#include <vector>
#include <algorithm>
#include <iostream>
#include <boost/tuple/tuple_io.hpp>
#include <boost/tuple/tuple_comparison.hpp>       // これがないとビルドできない

typedef boost::tuple<long, double, float> Tpl;
typedef std::vector<Tpl> TplSet;

int main() 
{
  TplSet ts;
  ts.push_back(boost::make_tuple(1, 2, 3));
  ts.push_back(boost::make_tuple(2, 3, 1));
  ts.push_back(boost::make_tuple(0, 1, 2));
  std::cout << ts[0] << ts[1] << ts[2] << std::endl;
  std::sort(ts.begin(), ts.end());
  std::cout << ts[0] << ts[1] << ts[2] << std::endl;
  return 0;
} 

*1:いやまあ、Windowsカーネルはドキュメントもないのですが。