什麼是最習慣的方式來轉換它?C++ std :: array到shared_ptr的向量
std::array<SomeType,SIZE> arr;
std::vector<shared_ptr<SomeType>> vec; // <--- want to fill with pointers
// to items in arr
第二個問題 - 是否有可能在創建shared_ptr
到對象的堆棧分配array
?一旦vec
被銷燬,指針目標是否會「釋放」?
編輯
我需要的是這樣的
class Element {
Element *next;
}
class Group {
std::vector<Element*> elems;
}
int main() {
...
std::array<Element,10> elems = {...};
std::array<Group,4> groups = {...};
// shuffle elems and assign to groups; set next-pointers in elems:
// group1: &elem10
// group2: &elem8 &elem5
// group3: &elem2 &elem7 &elem3
// group4: &elem4 &elem9 &elem1 &elem6
// at some point:
// save or load all elems and groups,
// preserving pointers elem->elem, group->elem
}
你介意'arr'中的對象是否被移動或複製? –
@RichardHodges我認爲OP希望指向'arr'內的項,而不是指向'arr'中對象副本的對象的指針。 – Holt
你是指「釋放」指針目標是什麼意思?你不能「釋放」非動態分配的內存。 – Holt