如何動態地將內存分配給Vector?如何動態地分配內存到Vector <Point>?
vector<Point> vInPts;
//我的輸入向量 - 我已經傾倒值(大小6)一些
//否則對所述輸入向量指向一些計算
vector<Point> vOutPts;
//如何動態該輸出分配內存矢量點
如何動態地將內存分配給Vector?如何動態地分配內存到Vector <Point>?
vector<Point> vInPts;
//我的輸入向量 - 我已經傾倒值(大小6)一些
//否則對所述輸入向量指向一些計算
vector<Point> vOutPts;
//如何動態該輸出分配內存矢量點
可能你並不需要分配動態地引導自己。在內部,向量將分配它需要的內存來動態地存儲它的元素,並且會負責管理這個內存。因此,只要申報載體在自動存儲:
vector<Point> vOutPts;
可以通過調用std::vector::reserve分配的存儲器,用於載體中的預定量。
如果您絕對必須動態分配矢量,請確保您知道所有關於內存管理的內容,並且在smart pointers和RAII上閱讀。
這樣
vector <Point> *myvect= new vector<Point>()
但是不要忘記調用:
delete myvect
當你完成使用它,否則你會創建一個泄漏。
請注意,分配載體本身這種方式會不會一樣分配dinamically矢量內容。只有例如您打算在函數內部創建一個矢量並通過引用返回它時,才應該完成矢量本身的動態分配。自動內存管理更容易處理,不容易出錯而且最安全的不是動態分配對象......因此,只要你沒有,你應該避免這種動態分配
這是對這個問題的一種可能的解釋,但非常糟糕的建議。 –
爲什麼? – Mppl
因爲它非常不尋常(我懷疑設計缺陷)想要動態分配'vector'對象本身。它用於自動管理動態內存,並增加一個額外的手動分配層來達到這個目的。 –
如果你知道你想要的大小,那麼你就可以分配與初始化足夠的元素:
vOutPts.resize(size);
,或者你可以用大小創建:
vector<Point> vOutPts(size);
否則,你可以成長一次向量一個元素:
vOutPts.push_back(some_point);
如果你知道(大致)有多少元素你想膿h,那麼你可以通過事先分配一些內存來提高效率,而不用初始化任何元素:
vOutPts.reserve(approx_size);
您可以使用'vOutPts.reserve()'。這將分配內存而不實際向矢量填充值。或'vOutPts.resize()',它將分配空間並用默認初始化的元素填充它。那是你需要的嗎? – jogojapan