2015-06-11 40 views
0

在C++中,如何声明具有特定大小的强制字符串类型参数的对象数组,其中用户在运行时将提供大小的特定大小的参数? 假设'顶点'是我的类,它需要一个字符串类型参数传递给参数化构造函数,同时声明'顶点'的对象。 当我写声明具有用户输入大小的对象数组

Vertex s=Vertex("xx"); 

它是声明单个对象确定。 但我希望数组大小为N,它将在运行时从用户处获得。

简而言之,我想要Vertex obj [N]。实现它的语法是什么?

**我想我有一个强制性的字符串参数我class.The的参数化的构造函数传递对象数组所说的复制链接的问题不具有的标准。**

+1

'Vertex * vArr = new Vertex [N]'或使用'std :: vector :: resize(n)'其中N由用户给出。你的课程必须有默认的c.tor –

+0

通过阅读你的C++书籍的前几章。 –

+0

@ David Vertex * vArr = new Vertex [N]不起作用,因为它在语法中也需要字符串参数。请参阅我的示例。 –

回答

1

可以使用std::vector代替阵列,它会根据需要增长。

std::vector<Vertex > vec; 

如果用户给大量它是预留分配的矢量,以避免存储器载体进一步realloaction使用std::vector::reserve()

因此,如果用户输入了巨大的数量N的最佳选择,

vec.reserve(N) 
+0

这是不是可能的数组,因为我有其他操作基于类的对象索引? –

+0

@ starter.pack你可以将字符串对象作为参数传递给构造函数。没有人反驳它。如果你更喜欢使用对象作为索引,我认为你是一对对和关键作为对象和值是相应的值。对于你的上面的问题,我的答案是使用std :: vector也可以通过使用索引操作符像数组来访问元素。在数组的情况下,你必须乏味地管理内存,但如果你使用矢量,它会照顾它。 – Steephen