有没有办法在您的代码中将私有(private)变量添加到 STL 类中?例如,使“std::list”的任何实例都将附加一个附加变量。还是您只需要从头开始制作自己的 list ?
最佳答案
在少数情况下,是的。例如 std::istream 和 std::ostream 有一个特殊的、很少使用的方法叫做 xalloc()
它允许您向这些类的所有实例添加一个或多个 long
或 void*
成员。
但这并不典型。对于像 std::list 这样的容器类,没有像那样的成员 Hook 来添加“槽”来包含自定义数据。
但是,容器类确实有一个可选的分配器模板参数。每个容器都有一个分配器,默认情况下是无状态的,使用 new
和 delete
来分配元素。在 C++11 及更高版本中,这些分配器可以是“有状态的”,这意味着您可以使用 new
和 delete
创建自己的分配器,但也可以存储任意额外数据。
一旦你用你需要的状态编写了你的分配器,你就可以检索它,例如从列表中使用 get_allocator()
.
关于c++ - 将私有(private)变量添加到 C++ STL 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824447/