| 97 | |
| 98 | template<typename Key, typename Value> |
| 99 | bool MinK<Key, Value>::insert(Key key, Value value) { |
| 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 | } |
| 117 | |
| 118 | |
| 119 | //----------------------------------------------------------------------------- |