具有不同数量元素但没有动态内存分配的 Std 容器

Std Container of varying number of elements but no dynamic memory allocation

提问人:fuse tee 提问时间:3/30/2023 更新时间:3/31/2023 访问量:80

问:

Stack-Overflow Question: Constant Size Vector 不太相同。

我需要一个容器来容纳具有以下属性的size_t:

  1. push_back、包含、查找和擦除;至于向量<size_t>
  2. 规定的固定内存占用(我知道编译时的最大元素数作为 constexpr)。

数组类不能解决问题,因为数组始终包含给定数量的元素。因此,我需要一个容器来区分它保留的内存和它实际包含的项目。

谁知道 c++2020 标准中合适的容器?

C++ 容器 std c++20 stdvector

评论

2赞 PaulMcKenzie 3/30/2023
使用 boost 静态矢量
1赞 463035818_is_not_an_ai 3/30/2023
我不认为它开箱即用,但您可以与自定义分配器一起使用。或者包装一个,然后使用其内存来存储元素。std::vectorstd::array<char,n*sizeof(T)>
0赞 463035818_is_not_an_ai 3/30/2023
等一下...元素是?没有动态分配?那么,拥有元素和只有内存准备好放置元素之间几乎没有区别。保持简单易用size_tstd::array
0赞 Passer By 3/30/2023
将自定义分配器与 一起使用。std::vector
1赞 fuse tee 3/30/2023
Reserve 使用一次“new”。这与某些目标不兼容。@Jeffrey

答:

2赞 Jeffrey 3/31/2023 #1

向量的定义是:

template<class T, class Allocator = std::allocator<T>> class vector;

https://en.cppreference.com/w/cpp/container/vector

注意这个部分。Allocator

因此,例如,如果您处于一个高代码成熟度环境中,并且有一个禁止使用 的 linter,则可以提供一个从固定静态池进行分配的分配器。此分配器可以强制执行所需的约束。new