স্পষ্টতই, দুটি পরিষ্কার করার জন্য সবচেয়ে সুস্পষ্ট উপায় রয়েছে std::queue
: খালি বস্তুর সাথে অদলবদল এবং খালি অবজেক্টে অ্যাসাইনমেন্ট।
আমি অ্যাসাইনমেন্টটি ব্যবহার করার পরামর্শ দেব কারণ এটি কেবল দ্রুত, আরও পঠনযোগ্য এবং দ্ব্যর্থহীন।
আমি নিম্নলিখিত সাধারণ কোডটি ব্যবহার করে পারফরম্যান্সটি পরিমাপ করেছি এবং আমি দেখতে পেয়েছি যে সি ++ 03 সংস্করণে অদলবালি একটি খালি অবজেক্টের অ্যাসাইনমেন্টের চেয়ে 70-80% ধীর গতির কাজ করে। তবে C ++ 11 এ পারফরম্যান্সে কোনও পার্থক্য নেই। যাইহোক, আমি নিয়োগের সাথে যেতে হবে।
#include <algorithm>
#include <ctime>
#include <iostream>
#include <queue>
#include <vector>
int main()
{
std::cout << "Started" << std::endl;
std::queue<int> q;
for (int i = 0; i < 10000; ++i)
{
q.push(i);
}
std::vector<std::queue<int> > queues(10000, q);
const std::clock_t begin = std::clock();
for (std::vector<int>::size_type i = 0; i < queues.size(); ++i)
{
// OK in all versions
queues[i] = std::queue<int>();
// OK since C++11
// std::queue<int>().swap(queues[i]);
// OK before C++11 but slow
// std::queue<int> empty;
// std::swap(empty, queues[i]);
}
const double elapsed = double(clock() - begin) / CLOCKS_PER_SEC;
std::cout << elapsed << std::endl;
return 0;
}
deque
সমর্থন করে