[英]vector of vectors, bad alloc
我有一個名為Contact的類,我想建立一個指向這些對象的指針的數據結構,例如127行20列的矩陣。 我試圖以這種方式使用std :: vector類
std::vector < std::vector<Contact* > > matrix (127, std::vector < Contact* > (20));
然后,在標頭中聲明了以下內容
std::vector<std::vector<Contact* > > Buckets;
我將初始化和聲明過的矩陣分配給它(此步驟是因為基本上我不知道如何以更清晰和簡短的方式完成它):
Buckets = matrix;
但是像這樣使用push_back函數
Buckets[pot].push_back(cont_temp);
一段時間后會產生錯誤(“拋出'std :: bad_alloc'實例后終止調用”),我不知道如何解決。
還有其他更好的方法來實例化和初始化矩陣嗎? 您會建議其他解決方案,而不是使用向量向量(boost :: multiarray ..?)嗎?
謝謝(抱歉這個愚蠢的問題,我是一個可憐的學生:)
編輯 :我發現了錯誤(只是一個任務超出范圍)。 如果您對這種數據結構有一般性建議,我仍在這里...
當您說“一段時間后”是什么意思? std :: bad_alloc意味着您內存不足。 您是否有一個循環吞噬了內存?
矩陣中的聯系人是否動態分配? 如果是這樣,當您說:
Buckets = matrix;
最后,您將獲得兩個指向同一動態分配對象的指針,這只會導致麻煩。 您應該改用智能指針矢量,例如Boost的共享指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.