如何修复std :: list的最大大小?

时间:2014-08-21 11:02:53

标签: c++

如何修复std :: list的最大大小?

让我们说最大值是100,所以我的std :: list的大小从0到100不等。

2 个答案:

答案 0 :(得分:3)

当您追加到100以上时(例如)错误的列表的概念不是标准列表支持的。

如果标准容器方法是虚拟的,您可以使用公共继承并创建一个自己的bounded_list来做到这一点。你可以覆盖可能影响大小的每个方法,包括你可能没有听说过的奇怪的方法,如emplace_back() ......并添加一些额外的检查代码。但这些方法并不是虚拟的,所以你真的要写一个新的容器;无论如何,你本来不想做很多工作。

与其尝试使用“边界”功能重新概括标准容器,通常在设计中,更容易定义程序结​​构的抽象概念。无论如何,在容器的原始级别上发言并不是你的大多数程序都在做什么 - 你不是push_back一个员工,你做Company.hireEmployee(或其他什么)。这些是更好的时刻来检查;并且您可能有更多空间同时进行语义上有意义的检查。我们的想法是,将一个容器更换为另一个容器很容易 - 而不是将您的船停泊在一个特别挂钩的容器上。

但是,我注意到Boost有一个“有界数组”,它是堆栈分配的。它可能符合您的目的,也可能不符合您的目的:

http://www.boost.org/doc/libs/1_40_0/libs/numeric/ublas/doc/bounded_array.htm

答案 1 :(得分:0)

如果你真的需要确保你的列表最多只有100个元素,你可以创建自己的类,从列表派生,并覆盖修饰符函数,如push_back,类似于对大小进行绑定检查。