我正在编写一种排序算法,我只能使用堆栈。通过增加堆栈数量,我可以用更少的操作进行排序。
无论如何,我说有一个10个整数的数据集。以下内容(使用std::stack
)会有什么不同:
另外,一堆空的int占用了多少内存?它只是一个额外的int指针吗?
请将此问题视为学术问题。我知道有更好的方法来解决这个问题,但我只能使用堆栈。
答案 0 :(得分:1)
std :: stack的大小取决于std :: stack和底层容器的特定实现(默认情况下是std :: deque)。
(另请参阅:std::deque memory use; What the heque is going on with the memory overhead of std::deque?; https://stackoverflow.com/a/5559774/257568;等等。
答案 1 :(得分:1)
最明显的答案是:一切都取决于。实际上,有些事情可以说。
所有容器都会产生适度的开销,最多可能是(可能)几个指针和几个整数。你可以知道你真的想知道多少,但它会是恒定的,而且很小,取决于实现。
C ++标准可以帮助您将需求放在容器的存储部分上。因为迭代器(或多或少)等效于指针,所以堆栈元素放置在连续的内存位置,其对齐方式与相同项的数组相同。你可以预测这部分。
它再次让你失望的是,“松弛”空间的数量没有限制。容器可能包含5个元素,并且有足够的空间容纳500.这将再次取决于实现。
所以这完全取决于。你只需要尝试并看看。