2015-06-11 69 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