c++ - 我可以使用 std::stack 作为对象池容器吗?

标签 c++ stl memory-management containers

我需要创建一个对象池来消除动态分配。使用 std::stack 包含已分配对象的指针是否有效?

我怀疑每次将释放的对象推回到堆栈时,都会动态分配一个新的堆栈元素。我对吗?我应该使用 std::vector 来确保没有分配任何新内容吗?

最佳答案

堆栈是否适合您的特定目的是我不会处理的问题。现在,如果您关心分配的数量,则 std::stack 的默认内部容器是 std::deque<>。它不需要在每次推送中为堆栈分配新内存(只要有空间),并且在分配时不需要像 std::vector<> 那样重新定位所有现有元素。

您可以通过第二个模板参数告诉堆栈使用 std::vector<> 作为底层容器:

std::stack< int, std::vector<int> > vector_stack;

关于c++ - 我可以使用 std::stack 作为对象池容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1491491/

相关文章:

c++ - 创建一个程序以在 openWRT 上运行它入门

c++ - 控制 std::vector 重新分配

c++ - 有没有一种方法可以将一 block 无符号字符移动到 STL vector 中,而不是一次移动 1 个无符号字符

c++ - 根据线程优先级/特权授予对资源的访问权限

c++ - 具有四个迭代器的类复制算法

iphone - 在委托(delegate)回调方法中释放委托(delegate)对象

c - 如何模拟内存分配失败?

c - 避免与内存分配相关的错误

C++ Push_back复制对象而不是引用

c++ - 是否有类似于 QByteArray 的标准 C++ 类?