将私有变量添加到c ++ stl类

时间:2016-11-27 00:05:01

标签: c++ stl std private

有没有办法将私有变量添加到代码中的STL类?例如,使它成为" std :: list"的任何实例。将附加一个额外的变量。或者你只需​​要从头开始制作自己的清单?

1 个答案:

答案 0 :(得分:3)

在少数情况下,是的。例如,std :: istream和std :: ostream有一个特殊的,很少使用的名为xalloc()的方法,它允许您向这些类的所有实例添加一个或多个longvoid*成员

但那并不典型。对于像std :: list这样的容器类,没有像这样的成员钩子来添加“slots”来包含自定义数据。

但是,容器类确实有一个分配器的可选模板参数。每个容器都有一个分配器,默认情况下是无状态的,并使用newdelete来分配元素。在C ++ 11及更高版本中,这些分配器可以是“有状态的”,这意味着您可以使用newdelete创建自己的分配器,但也可以存储任意额外数据。

一旦你用你需要的状态编写了你的​​分配器,就可以检索它,例如使用get_allocator()列表。