[英]Vector Initialisation in C++
我在我的代碼中使用Vectors。
導致錯誤的行如下:
vector<Node> alt_seq ;
alt_seq = vector<Node>(1000);
for(int j=0; j<alt_cf.getNoOfNodes(i); j++)
{
Node temp_node = *alt_itr;
alt_itr++;
alt_seq.push_back(temp_node);
}
這條線:
alt_seq.push_back(temp_node);
導致運行時錯誤。 但是,如果我使用一些初始大小初始化Vector,如下所示:
vector<Node> alt_seq(1000) ;
在這種情況下,代碼工作正常。 但是我不想給出初始大小,因為向量中的對象數量在運行時是可變的。 請幫我。 我是C ++的新手。
供您參考,完整的Method函數在這里:
您的Node
類有一個CombinedFragment*
類型的指針成員,稱為cfrag
。 如果您沒有定義自己的復制ctor和賦值運算符,則會創建懸空引用。 此外,如果Node
負責分配/解除分配cfrag
,則需要適當的dtor來防止泄漏。 如果您不想深度復制CombinedFragment
,可以使用shared_ptr
。
此外, Node
的默認ctor可能甚至不需要在那里(它將cfrag
為未初始化狀態)。
我可以看到一個問題; 當你聲明1000個vector
對象,然后執行push_back
你將添加到矢量的末尾,即你想要添加的對象是1001,1002 ......等等。如果聲明1000個vector
對象沒有t給你一個運行時錯誤,我首先會看到默認定義是什么(因為前1000個節點對象有默認值),因為這不是錯誤輸出並與我試圖加載的實際數據進行比較。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.