C++ 如何确定std容器的节点大小?

C++ 如何确定std容器的节点大小?,c++,containers,allocator,C++,Containers,Allocator,我想为基于节点的容器实现一个自定义分配器,如std::unordered_map或std::list。对于该分配器,我需要指定节点的大小。我怎么得到这个?我知道在C++17中,至少std::unordered_map有一个节点类型,但我目前绑定到C++11分配器不是只负责存储在映射中的对象的内存分配而不负责节点吗?那么为什么需要节点的大小呢?不,分配器用于分配值类型加上一些额外信息的节点。它还分配一些大型数组。在我使用Map=std::unordered\u Map的机器上,我得到了sizeof

我想为基于节点的容器实现一个自定义分配器,如
std::unordered_map
std::list
。对于该分配器,我需要指定节点的大小。我怎么得到这个?我知道在C++17中,至少
std::unordered_map
有一个
节点类型
,但我目前绑定到C++11

分配器不是只负责存储在映射中的对象的内存分配而不负责节点吗?那么为什么需要节点的大小呢?不,分配器用于分配值类型加上一些额外信息的节点。它还分配一些大型数组。在我使用Map=std::unordered\u Map的机器上,我得到了sizeof(Map::value\u type)==16,但实际上调用分配器为一个entryOk分配24个字节,从未意识到它将分配器的模板更改为给定类型的节点。但是在自定义分配器类中,由于模板参数,您知道节点的类型(因此也知道节点的大小),所以使用此信息有什么问题?在构造分配器之前,您需要这些信息吗?(如果您编写
std::list
创建的分配器实例是
allocator
)。@t.niese标准容器实际上需要调用
typename std::allocator\u traits::rebind\u alloc
来分配内部对象(节点)类型为
Node
@martinus是否要以编程方式获取内部节点的大小?或者您想告诉实现使用特定大小的节点吗?