給定一個原始數組元素,如何創建一個std::vector
,該數組獲取原始數組的所有權而不用重新分配& copy?從原始數據創建std :: vector
例如具有原始陣列:
int* elems = new int[33]
如何創建尺寸33
指向elems
的std::vector
?
我相信理論上這是可能的,因爲通常std::vector
被實現爲包含三個指針的結構,一個指向分配內存的開始,一個指向有效元素的末尾,一個指向有效元素的末尾,一個指向末尾分配的內存。但有沒有一種標準的方式來初始化原始數組的std::vector
結構?
你不能。不要使用新的「原始數據」,使用矢量。 – 2017-11-11 09:04:48
如果你需要像'begin'或'front'這樣的常用方法,你可以在'unique_ptr'中存儲指向數組的指針並通過'array_view '訪問數組內容。 –
VTT
做相反的事情:讓'vector'管理內存,並創建一個指向它的指針'std :: vector v; int * elems = v.data();' –
Tas