【发布时间】:2021-07-28 06:00:27
【问题描述】:
在我的程序中,我经常需要一个拥有类似数组的容器 - 即用于连续存储在内存中的数据,但向量太灵活,实用性或效率都低于其应有的水平。
要求与std::vector 在一个或多个方面有所不同,例如:
- 元素只能插入到最后,不能移动其他元素
- 构造后/编译后无法更改容量
- 构建后/编译后无法更改大小
- 存储是类中固有的,不涉及分配器
- 对于像
std::vector<bool>这样的单一类型没有奇怪的特殊情况 - 引用和/或迭代器在插入时不会失效
- 等
如有必要,我将自己实现这样一个容器,但它可能已经存在于标准库或像 Boost 这样的流行库中。
问题是,它可能很难找到,也许它有一个你没想到的花哨的名字。那么,上述参数空间中存在哪些类向量容器?
即使现有容器不能满足我的要求,参考列表也会有所帮助:如果我最终实现了一个新容器,我可以采用适当的名称并避免混淆名称。
【问题讨论】:
-
这个问题的“和/或”太多了。运行时大小的数组与编译时大小的数组非常不同,并且可以以固定容量调整大小的数组与其他数组非常不同。您基本上似乎是在要求
vector的每一个可能的变化,也许是假设每一个可能的变化都以某种方式代表着某种效率的提高。 -
“你基本上似乎在询问向量的每一种可能的变体”one 变体,而不是关于任何特定的变体。所要求的信息是已经确立的变化。所以再次不是“所有可能的变化”。如果我问到一个特定的,答案自然会集中在那个上,即“这被广泛称为 foo_vector,使用它”或“不广泛可用,自己写”。
-
"问题是关于一种变体,而不是任何特定的变体。所要求的信息是哪些变体是公认的。" 这是一个矛盾。如果您要询问“一种变体”,则可以询问复数形式的“变体”。
标签: c++ arrays boost stdvector stdarray