对于std::vector的等号重载操作符的理解 |
您所在的位置:网站首页 › vector::iterator重载了哪些运算符 › 对于std::vector的等号重载操作符的理解 |
若赋值前后,allocatore变了,则需要用旧的解分配,然后需要重新allocate一下。 如果没有变,则不用重新allocate了呗。就用旧的allocate的内存就行了。 如果这个是false,则不需要替换allocator。这时可以复用this原来分配的内存。(注意,other的内存不复用) 但不管怎样,this的元素都会被销毁,或者被赋值替换。 这里推断默认的value都是true。 2. 对于case (2) 移动赋值重载: 比如当前的vector的allocator_type是这样的: std::allocator_traits::propagate_on_container_copy_assignment::value 是true。 则要替换当前vector中的allocator。 如果allocator前后一样,则直接接管other的内存。 若为false且两者的allocator不相等,则不接管other的内存,且单独移动赋值每个元素。并用自身的分配器分配内存。 若为false且两者的allocator一样,也可以接直接接管other的内存。 但不管怎样,this的元素都会被销毁,或者被赋值替换。 绿色的地方他没说,我根据文档写的来推断出来的。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |