gpt4 book ai didi

c++ - std::list 如何分配节点与元素

转载 作者:可可西里 更新时间:2023-11-01 17:50:37 26 4
gpt4 key购买 nike

std::list 如何分配它保留 next/prev 指针和 T 它包含的元素?

我认为标准分配器只能用于为一种类型分配内存(因为std::allocator::allocatesizeof(T) 为增量分配内存).因此,在一次分配中分配列表节点和包含的对象似乎是不可能的,这意味着必须根据实现决定分配节点,并且节点存储指向对象的指针而不是对象本身,这意味着从指向列表节点的指针到它包含的对象的两个间接级别,这似乎效率低下。是这样吗?

最佳答案

分配器有一个成员模板类rebind,负责分配其他类型。 std::allocator 的页面here实际上有一个你要问的确切事情的例子。我将在这里引用它:

直到 C++11

std::list<T, A> allocates nodes of some internal type Node<T>, using the allocator A::rebind<Node<T>>::other

自 C++11 起

std::list<T, A> allocates nodes of some internal type Node<T>, using the allocator std::allocator_traits<A>::rebind_alloc<Node<T>>, which is implemented in terms of A::rebind<Node<T>>::other if A is an std::allocator

关于c++ - std::list 如何分配节点与元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24974935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com