将私有变量添加到C STL类

Adding private variable to c++ stl class

本文关键字:STL 添加 变量      更新时间:2023-10-16

是否有一种方法可以将私有变量添加到代码中的stl类中?例如,使其成为" STD :: list"的任何实例都将附加一个附加变量。还是您只需要从头开始列出自己的清单?

在某些情况下,是的。例如,std :: istream和std :: ostream具有一种特殊的,很少使用的方法,称为 xalloc(),可让您在这些类的所有实例中添加一个或多个longvoid*成员。

但这不是典型的。对于诸如std :: list之类的容器类,没有类似的成员挂钩来添加"插槽"以包含自定义数据。

但是,容器类确实具有分配器的可选模板参数。每个容器都有一个分配器,默认情况下是无状态的,并使用newdelete分配元素。在C 11及以后,这些分配器可以是"状态",这意味着您可以使用newdelete进行自己的分配器,还可以存储任意的额外数据。

用所需的状态写了分配器后,您可以检索它,例如在使用get_allocator()的列表中。