Closed muyuuuu closed 3 weeks ago
智能指针防止大对象移动中:
using BigType = array<int, 1000>; // 4000 字节大小的平坦类型 using BigTypePtr = unique_ptr<BigType>; vector<BigType> arr; void func(BigTypePtr x) { arr.push_back(std::move(x)); // 只拷贝 8 字节的指针,其指向的 4000 字节不用深拷贝了,直接移动所有权给 vector 里的 BigTypePtr 智能指针 // 由于移走了所有权,x 此时已经为 nullptr } int main() { BigTypePtr x = make_unique<BigType>(); // 注意:用智能指针的话,需要用 make_unique 才能创建对象了 func(std::move(x)); // 只拷贝 8 字节的指针 // 由于移走了所有权,x 此时已经为 nullptr }
应该: vector<BigTypePtr> arr;
vector<BigTypePtr> arr;
感谢指出,已修复!
智能指针防止大对象移动中:
应该:
vector<BigTypePtr> arr;