| 271 | |
| 272 | template <class T, class Cmp> |
| 273 | std::vector<T> *TopN<T, Cmp>::Extract() { |
| 274 | auto out = new std::vector<T>; |
| 275 | out->swap(elements_); |
| 276 | if (state_ != HEAP_SORTED) { |
| 277 | std::sort(out->begin(), out->end(), cmp_); |
| 278 | } else { |
| 279 | out->pop_back(); |
| 280 | std::sort_heap(out->begin(), out->end(), cmp_); |
| 281 | } |
| 282 | return out; |
| 283 | } |
| 284 | |
| 285 | template <class T, class Cmp> |
| 286 | std::vector<T> *TopN<T, Cmp>::ExtractUnsorted() { |