c++ - 将私有(private)变量添加到 C++ STL 类

标签 c++ stl std private

有没有办法在您的代码中将私有(private)变量添加到 STL 类中?例如,使“std::list”的任何实例都将附加一个附加变量。还是您只需要从头开始制作自己的 list ?

最佳答案

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

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

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

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

关于c++ - 将私有(private)变量添加到 C++ STL 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824447/

相关文章:

macos - cmake 不断添加 std=gnu++11 选项

c++ - 尝试学习 boost::intrusive Q3 - 在 IC 中存储指针时,我应该使用 smart_pointer 吗?

c++ - 如何将普通类中的模板成员特化为模板类型

c# - C# 和 C++ 中虚拟函数的编译器行为差异。这是我在采访中被问到的

c++ - 一个对象被销毁后,标量类型的子对象会发生什么?

c++ - std :find function 过载

c++ - "cout << cout"- 输出代表什么?

c++ - 如何在 C++ 中迭代集合映射 (std::map<string,std::set< string>>)?

c++ - 当需要访问容器时返回迭代器而不是底层容器本身

C++ STL 容器集和多集 :the insert operation with different return types