相关疑难解决方法(0)

什么是三法则?

  • 什么是抄袭的对象是什么意思?
  • 什么是复制构造函数复制赋值运算符
  • 我什么时候需要自己申报?
  • 如何防止复制对象?

c++ c++-faq copy-constructor assignment-operator rule-of-three

2067
推荐指数
8
解决办法
27万
查看次数

std :: vector :: assign/std :: vector :: operator =(const&)是否保证在`this`中重用缓冲区?

如果我将一个向量分配或复制到另一个向量(具有与前者相同或更大的容量),我可以假设后者的缓冲区将被重用吗?

以下示例说明我可以通过标准保证吗?这方面的行为std::vector::assignstd::vector::operator=这方面有什么区别吗?

#include <vector>
#include <iostream>
#include <cassert>

int main()
{
    std::vector a {1, 2, 3, 4, 5};
    std::vector b {1, 2, 3, 4};
    std::vector c {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    std::cout << "1 ==== " << a.capacity() << " " << a.data() << std::endl;

    const auto* pa = a.data();   
    a = b;
    assert(pa == a.data());
    std::cout << "2 ==== " << a.capacity() << " " << a.data() << std::endl;

    a …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer c++14 c++17

6
推荐指数
1
解决办法
230
查看次数