All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MinK< Key, Value > Class Template Reference

Classes

struct  Element
 

Public Member Functions

 MinK (Key max_key, int k)
 
 ~MinK ()
 
bool insert (Key k, Value v)
 
const Key & max_insertable_key ()
 
int elements_count ()
 
const Elementelements ()
 

Detailed Description

template<typename Key, typename Value>
class MinK< Key, Value >

Store the k smallest-keyed key-value pairs.

Definition at line 53 of file kdtree.cpp.

Constructor & Destructor Documentation

template<typename Key, typename Value >
MinK< Key, Value >::MinK ( Key  max_key,
int  k 
)

Definition at line 81 of file kdtree.cpp.

81  :
82  max_key_(max_key), elements_count_(0), k_(k < 1 ? 1 : k), max_index_(0) {
83  elements_ = new Element[k_];
84 }
template<typename Key , typename Value >
MinK< Key, Value >::~MinK ( )

Definition at line 87 of file kdtree.cpp.

87  {
88  delete []elements_;
89 }

Member Function Documentation

template<typename Key, typename Value>
const Element* MinK< Key, Value >::elements ( )
inline

Definition at line 70 of file kdtree.cpp.

70 { return elements_; }
template<typename Key, typename Value>
int MinK< Key, Value >::elements_count ( )
inline

Definition at line 69 of file kdtree.cpp.

69 { return elements_count_; }
template<typename Key, typename Value>
bool MinK< Key, Value >::insert ( Key  k,
Value  v 
)

Definition at line 99 of file kdtree.cpp.

99  {
100  if (elements_count_ < k_) {
101  elements_[elements_count_++] = Element(key, value);
102  if (key > elements_[max_index_].key)
103  max_index_ = elements_count_ - 1;
104  return true;
105  } else if (key < elements_[max_index_].key) {
106  // evict the largest element.
107  elements_[max_index_] = Element(key, value);
108  // recompute max_index_
109  for (int i = 0; i < elements_count_; i++) {
110  if (elements_[i].key > elements_[max_index_].key)
111  max_index_ = i;
112  }
113  return true;
114  }
115  return false;
116 }
template<typename Key , typename Value >
const Key & MinK< Key, Value >::max_insertable_key ( )

Definition at line 92 of file kdtree.cpp.

92  {
93  if (elements_count_ < k_)
94  return max_key_;
95  return elements_[max_index_].key;
96 }

The documentation for this class was generated from the following file: