【发布时间】:2011-09-13 06:36:13
【问题描述】:
C++ STL 向量有很多不错的属性,但只有在每个项目的大小在运行时已知时才有效。
我想要一个在运行时具有动态项目大小的矢量类。
背景:我的项目由一系列整数和双精度数组成;仅在运行时已知的序列。在运行时为向量提供每个项目的大小就足够了。
我知道可能的解决方法,但这些方法往往不能反映算法的基本思想,这对于维护而言总是一件坏事。有没有像人们期望的那样提供如此便利和高效工作的类?
编辑:
这与整个数组中的项目大小不同。它与此无关。在运行时决定数组中的项目有多大;即动态类型的(非常)弱形式,与模板中使用的静态类型形成对比。
因此对象的初始化应该如下所示:
DynamicVector V( lengthofvector, sizeofelement );
应用程序是简单的网格。对象 $V$ 包含固定大小或“类型”的项目,每个项目都包含用于拓扑信息的整数和用于某些几何信息的双精度数。甚至可能会出现布尔值,但到目前为止这无关紧要。
【问题讨论】:
-
听起来你想要一个向量的向量。在 C++ 中没有办法拥有不同大小的对象的集合。
-
我认为指针向量是您不想使用的解决方法之一?
-
@Neil 这看起来像是对我的回答。
-
dynamic item size是什么意思?项目本身是容器,还是您的意思是sizeof(item)会有所不同? -
所以你的向量中的每个项目都是一个序列?或者向量包含整数或双精度项的序列?人们期望这样的数据结构有多高效?