Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有外部分配元素的序列容器(在STL中)?_C++ - Fatal编程技术网

C++ 是否有外部分配元素的序列容器(在STL中)?

C++ 是否有外部分配元素的序列容器(在STL中)?,c++,C++,我想使用一个像but这样的类型,并对包含的元素进行外部分配。这一要求是为了获得对分配的更多控制 此类元素可能必须使用包含链接列表元素所需成员的类模板 它是可以实现的,但我想知道是否已经有一个经过验证的在用解决方案?我必须使用C++17或更高版本 元素的外部分配意味着定义、分配和初始化是在容器类型的控制之外完成的。然后手动将该对象添加到容器中。转发列表的定义是: template<class T, class Allocator = std::allocator<T>> c

我想使用一个像but这样的类型,并对包含的元素进行外部分配。这一要求是为了获得对分配的更多控制

此类元素可能必须使用包含链接列表元素所需成员的类模板

它是可以实现的,但我想知道是否已经有一个经过验证的在用解决方案?我必须使用C++17或更高版本


元素的外部分配意味着定义、分配和初始化是在容器类型的控制之外完成的。然后手动将该对象添加到容器中。

转发列表的定义是:

template<class T, class Allocator = std::allocator<T>> class forward_list;
这样,您就可以使用

forward_list<int, MyAllocator> my_list;

它不是C++中最琐碎的部分,但是您可以在编写自定义分配器时阅读。p> 或者,正如@NathanOliver所说

forward_list<shared_ptr<Type>> myList;
forward_list<unique_ptr<Type>> myList;

可能适合您的需要,因为分配将发生在外部。

考虑到您希望对列表元素进行细粒度控制,以使其达到连接的级别,Boost.Intrusive可能是一个选项


Boost.Intrusive提供了一个侵入式slist类:

您所说的包含元素的外部分配是什么意思?定义、分配和初始化是在容器类型的控制之外完成的。然后手动将该对象添加到容器中。您可以为容器指定自定义分配器。听起来,向量可能就是您要寻找的。分配基本上就是定义容器所包含内容的内容。如果你不包含这个对象,那么它真的是一个容器了吗?例如,您可以使用指针。指针可以指向某个地方的某个人从外部分配的对象。使用std::forward_list和shared_ptr、unique_ptr或自定义分配器仍然意味着容器将分配内存并复制对象。。。??正确地说,我实际上是在寻找一种非所有者列表类型。使用带有共享指针的前向列表将使前向列表为指针分配内存一个指针+最小开销,而不是对象本身。绝对不是复制品。无论您最终使用什么,您的容器都需要分配一些内存。谢谢!像这样的东西是我要找的。如果它是STL的一部分,那就更好了。