분명히, 가장 명확한 두 가지 방법이 있습니다 std::queue
. 빈 객체로 바꾸고 빈 객체에 할당하는 것입니다.
과제는 더 빠르고 더 읽기 쉽고 모호하지 않기 때문에 할당을 사용하는 것이 좋습니다.
다음 간단한 코드를 사용하여 성능을 측정 한 결과 C ++ 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
지원 분명