All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
moveLogProbVector.cc
Go to the documentation of this file.
2 #include <boost/foreach.hpp>
3 #include <algorithm>
4 #include <iostream>
5 
6 // 厳密な整列は特に必要ではない
7 // #define RIGID_SORT_OF_MOVE
8 
9 #ifndef MINIMAL
10 std::ostream& osl::container::operator<<(std::ostream& os,MoveLogProbVector const& mv)
11 {
12  os<< "LogProbVector" << std::endl;
13  BOOST_FOREACH(const MoveLogProb& move, mv)
14  {
15  os << move << std::endl;
16  }
17  return os << std::endl;
18 }
19 #endif
21 {
22  return l.size() == r.size()
23  && std::equal(l.begin(), l.end(), r.begin());
24 }
25 
26 namespace osl
27 {
28  template <bool isLess>
30  {
31  bool operator()(const MoveLogProb& l, const MoveLogProb& r) const
32  {
33 #ifdef RIGID_SORT_OF_MOVE
34  if (l.logProb() != r.logProb())
35  {
36 #endif
37  if (isLess)
38  return l.logProb() < r.logProb();
39  else
40  return l.logProb() > r.logProb();
41 #ifdef RIGID_SORT_OF_MOVE
42  }
43  return l.move() > r.move();
44 #endif
45  }
46  };
47 }
48 
50 {
51  std::sort(begin(), end(), LogProbCompare<true>());
52 }
54 {
55  std::sort(begin(), end(), LogProbCompare<false>());
56 }
57 
59 {
60  for (const_iterator p=begin(); p!=end(); ++p)
61  if (p->move() == m)
62  return &*p;
63  return 0;
64 }
65 
66 // ;;; Local Variables:
67 // ;;; mode:c++
68 // ;;; c-basic-offset:2
69 // ;;; End: