27 November 2022

C++ 核心指南目录

C.102: Give a container move operations

理由

容器很容易变得很大,如果没有移动构造函数和复制构造函数,移动容器对象会变得很耗计算资源。因此,人们倾向于使用指针操作容器,但是这样就会遇到内存管理的问题。

例子

Sorted_vector<int> read_sorted(istream& is)
{
    vector<int> v;
    cin >> v;   // assume we have a read operation for vectors
    Sorted_vector<int> sv = v;  // sorts
    return sv;
}

我们应该允许用户认为返回一个符合标准的容器是很节省资源的。只有我们定义的容器类实现了移动构造函数,才能为用户提供这种保证。