队列堆或栈

Queue heap or stack

队列分配在栈上还是堆上?我想在函数内部使用队列:

void lee()
{
  queue<int>Q;
  //stuff
}

我想知道我是否需要做:

queue<int>().swap(Q);

在函数结束时释放 memory.If 队列在堆栈上,然后我不必释放它,因为它会在函数 ends.If 时被释放有什么不对请告诉我,我还是个初学者。

std::queue 和所有其他 STL 容器遵循 RAII 并在超出范围后自行清理。 std::queue 的成员分配在堆栈上,但它们可能包含指向堆分配内存的指针,当对象超出范围时(在本例中为函数结束),这些内存将被释放。请注意,如果您像这样对未命名的 std::queue 进行操作:std::queue<int>().some_method(),则 std::queue 在语句末尾超出范围。