My Project
moveLogProbVector.cc
Go to the documentation of this file.
2 #include <algorithm>
3 #include <iostream>
4 
5 // 厳密な整列は特に必要ではない
6 // #define RIGID_SORT_OF_MOVE
7 
8 #ifndef MINIMAL
9 std::ostream& osl::container::operator<<(std::ostream& os,MoveLogProbVector const& mv)
10 {
11  os<< "LogProbVector" << std::endl;
12  for (const MoveLogProb& move: mv)
13  {
14  os << move << std::endl;
15  }
16  return os << std::endl;
17 }
18 #endif
20 {
21  return l.size() == r.size()
22  && std::equal(l.begin(), l.end(), r.begin());
23 }
24 
25 namespace osl
26 {
27  template <bool isLess>
29  {
30  bool operator()(const MoveLogProb& l, const MoveLogProb& r) const
31  {
32 #ifdef RIGID_SORT_OF_MOVE
33  if (l.logProb() != r.logProb())
34  {
35 #endif
36  if (isLess)
37  return l.logProb() < r.logProb();
38  else
39  return l.logProb() > r.logProb();
40 #ifdef RIGID_SORT_OF_MOVE
41  }
42  return l.move() > r.move();
43 #endif
44  }
45  };
46 }
47 
49 {
50  std::sort(begin(), end(), LogProbCompare<true>());
51 }
53 {
54  std::sort(begin(), end(), LogProbCompare<false>());
55 }
56 
58 {
59  for (const_iterator p=begin(); p!=end(); ++p)
60  if (p->move() == m)
61  return &*p;
62  return 0;
63 }
64 
65 // ;;; Local Variables:
66 // ;;; mode:c++
67 // ;;; c-basic-offset:2
68 // ;;; End:
size_t size() const
Definition: container.h:243
array_t::const_iterator const_iterator
Definition: container.h:157
int logProb() const
Definition: moveLogProb.h:40
const Move move() const
Definition: moveLogProb.h:39
圧縮していない moveの表現 .
Definition: basic_type.h:1052
void sortByProbabilityReverse()
確率が低い順にsort
const MoveLogProb * find(Move) const
void sortByProbability()
確率が高い順にsort
bool operator==(BitXmask l, BitXmask r)
Definition: bitXmask.h:33
std::ostream & operator<<(std::ostream &, const BitXmask)
Definition: bitXmask.cc:6
bool operator()(const MoveLogProb &l, const MoveLogProb &r) const