限制stl堆栈对象的大小

moh*_*hit 4 c++ stack stl

a的大小是否有限制std::stack

我使用a std::stack<std::pair<int,std::string>>作为我的堆栈,当条目数超过大约100万时,我收到运行时错误.

这是由于对大小的限制std::stack吗?

Bil*_*eal 5

std::stack是一个容器适配器.它只是一个其他容器的前端,使它看起来像一个堆栈.考虑到std::vector可以像一个堆栈来处理,如果你更换名称pushpush_back和名字poppop_back.因此,任何尺寸限制或类似限制将是背衬容器的结果,而不是std::stack.

std::stackis std::deque(N3376 23.6.5.2 [stack.defn])的默认后备容器.该标准要求std::deque提供一个max_size成员函数(N3376 23.3.3.1 [deque.overview]/2),它告诉您std::deque根据实现限制可以容纳的最大元素数.这通常是类似的std::numeric_limits<std::deque<t>::size_type>::max().

但是,您更有可能遇到机器内存限制,或者在应用程序的其他地方出现一些错误导致运行时错误.