wordpress 仿站命令,湖南株洲网站建设,投稿平台,学校网站建设状况C 缓存再排序#xff0c;解决多线程处理后的乱序问题#xff0c;不知道思路对不对[挠下巴] 使用map默认会根据key排序的原理作缓存#xff0c;队列满了依次推出#xff0c;抛弃掉过时的数据 #include functional
#include iostream
#include map
#… C 缓存再排序解决多线程处理后的乱序问题不知道思路对不对[挠下巴] 使用map默认会根据key排序的原理作缓存队列满了依次推出抛弃掉过时的数据 #include functional
#include iostream
#include map
#include random
#include set
#include tuple
#include vectortemplate typename V class SortQueue {
private:std::functionvoid(const int, V ) callback;std::mapint, V m;int max_size;int last;public:SortQueue(int max) : max_size(max), last(0) {}~SortQueue() {}void setCallback(std::functionvoid(const int, V ) callback) {this-callback callback;}void push(int k, V v) {if (k last)return;m.emplace(std::make_pair(k, std::move(v)));if (m.size() max_size) {auto it m.begin();if (callback) {callback(it-first, it-second);last it-first;}m.erase(it);}}
};std::vectorint r(int start, int end, int size) {std::setint generated_nums; // 存储已生成的随机数std::vectorint nums;std::random_device rd;std::mt19937 gen(rd());std::uniform_int_distributionint dis(start, end);while (generated_nums.size() size) { // 生成10个不重复的随机数int random_num dis(gen);if (generated_nums.find(random_num) generated_nums.end()) {generated_nums.insert(random_num);nums.push_back(random_num);}}return std::move(nums);
}void p(std::vectorint arr) {std::string result;for (int i 0; i arr.size(); i) {result std::to_string(arr[i]) ;if ((i 1) % 10 0) {result \n;}}std::cout 拼接后的字符串: \n result std::endl;
}int main(int argc, char *argv[]) {std::vectorint nums;int start 1;int end 0;int size 10;for (int i 0; i 5; i) {start i * size 1;end i * size 10;std::vectorint temp r(start, end, size);nums.insert(nums.end(), temp.begin(), temp.end());}// std::vectorint nums r(1, 50, 50);p(nums);SortQueueint sq(5);sq.setCallback([](const int k, int v) { std::cout K: k std::endl; });for (int num : nums) {sq.push(num, num);}return 0;
}