Files
CSCI-1200/hws/tiktok_trends/TopKVideoHolder.cpp
JamesFlare1212 a109046498 solve hw-9
2025-04-15 22:10:48 -04:00

32 lines
823 B
C++

#include "TopKVideoHolder.h"
void TopKVideoHolder::add(const VideoInfo& video) {
if (pq.size() < K) {
pq.push(video);
} else {
if (VideoCompareWorse()(video, pq.top())) {
pq.pop();
pq.push(video);
}
}
}
std::vector<VideoInfo> TopKVideoHolder::getSortedVideos() {
std::vector<VideoInfo> sortedVideos;
size_t current_size = pq.size();
if (current_size == 0) return sortedVideos;
sortedVideos.reserve(current_size);
while (!pq.empty()) {
sortedVideos.push_back(pq.top());
pq.pop();
}
std::sort(sortedVideos.begin(), sortedVideos.end(), VideoInfo::compareForFinalSort);
return sortedVideos;
}
bool TopKVideoHolder::empty() const { return pq.empty(); }
size_t TopKVideoHolder::size() const { return pq.size(); }