gpt4 book ai didi

c++ - 为什么 get_allocator 返回拷贝而不是引用

转载 作者:行者123 更新时间:2023-11-27 23:53:31 26 4
gpt4 key购买 nike

我正在使用自定义分配器,它内部有一个简单的小状态。当我将它与 std::vector 一起使用时,我很惊讶地看到 get_allocator()实际上将拷贝返回给分配器。

此处记录:http://en.cppreference.com/w/cpp/container/vector/get_allocator

这是什么原因?

我能想到的一个原因是 get_allocatorconst成员(member),我不介意得到一个const对分配器的引用。除了内部分配器之外,还可以声明 mutable .

我错过了什么吗?有没有解决方法来获取 std::vector<T, special_allocator<T>> 的内部分配器?检查分配器的状态?

注意:如果分配器是有状态的,那么也有可能应该一直使用引用?喜欢std::vector<T, special_allocator<T>&>

最佳答案

有状态分配器应该在复制时保留其状态。

例如,当您为 map 传递一个分配器时,它会反弹到另一个分配器类型,但仍保留您传递给它的状态。

或者两个不同的容器共享分配器状态,但它们有不同的分配器实例。

通常,您的分配器具有指向您的状态的指针。将指向您的状态的指针作为分配器构造函数的参数,并将其作为容器构造函数的参数传递。

关于c++ - 为什么 get_allocator 返回拷贝而不是引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44381008/

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