2012年6月13日水曜日

boost::ptr_vector を使ったら、死ねたでござる(ToT)


#include <boost/ptr_container/ptr_vector.hpp>
#include <algorithm>
#include <iostream>


struct sineru {
  int i_;
  sineru(int i) : i_(i) { std::cout << "sineru::sineru(" << (void*)this << ")" << std::endl; }
  ~sineru() { std::cout << "sineru::~sineru(" << (void*)this << ")" << std::endl; }

  bool operator < (const sineru& rhs) const { return i_ < rhs.i_; }

};


int main() {
  boost::ptr_vector<sineru> v;

  for( int i = 5; i > 0; --i ) v.push_back( new sineru(i) );
  std::sort( v.begin(), v.end() );
 
  std::cout << "====== sorted ======" << std::endl;
 
  return 0;

}
実行結果
sineru::sineru(003B20C8)
sineru::sineru(003B2148)
sineru::sineru(003B2138)
sineru::sineru(003B2158)
sineru::sineru(003B2168)
sineru::~sineru(0018FE48)
sineru::~sineru(0018FE48)
sineru::~sineru(0018FE48)
sineru::~sineru(0018FE48)
====== sorted ======
sineru::~sineru(003B20C8)
sineru::~sineru(003B2148)
sineru::~sineru(003B2138)
sineru::~sineru(003B2158)
sineru::~sineru(003B2168)
 おいどんが、悪かったでごわす。move が導入されるまで、もう2度と ptr_container は、使いたくないでごわす。

0 件のコメント: