Signed-off-by: Zard-C <patrick.zhang5233@gmail.com>
This commit is contained in:
Zard-C 2024-07-05 10:00:52 +08:00 committed by GitHub
parent 924b8aa9d2
commit 0ecc9cd98f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -13,13 +13,13 @@
考虑一下`std::array`这是C++11中的新容器。`std::array`本质上是具有STL接口的内置数组。这与其他标准容器将内容存储在堆内存不同。存储具体数据在堆内存的容器本身只保存了指向堆内存中容器内容的指针真正实现当然更复杂一些但是基本逻辑就是这样。这个指针的存在使得在常数时间移动整个容器成为可能只需要从源容器拷贝保存指向容器内容的指针到目标容器然后将源指针置为空指针就可以了
```cpp
std::vector<Widget> vm1;
std::vector<Widget> vw1;
//把数据存进vw1
//把vw1移动到vw2。以常数时间运行。只有vw1和vw2中的指针被改变
auto vm2 = std::move(vm1);
auto vw2 = std::move(vw1);
```
![item29_fig1](media/item29_fig1.png)