c++ c++-faq copy-constructor assignment-operator rule-of-three
如果我将一个向量分配或复制到另一个向量(具有与前者相同或更大的容量),我可以假设后者的缓冲区将被重用吗?
以下示例说明我可以通过标准保证吗?这方面的行为std::vector::assign和std::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)