使用std :: move()与在构造函数成员初始化器列表中分配

问题描述 投票:0回答:1

[在参数化的构造函数(带有初始化列表)中使用std :: move()而不是常规成员初始化(即分配)的优点是什么?

例如,

#include <iostream>
#include <vector>

template <typename V>
class myVec{
    private:
        std::vector< std::vector<V> > vec;

    public:
        myVec1(const std::vector< std::vector<V> > &myArr):vec(myArr) {};
        myVec2(const std::vector< std::vector<V> > &myArr):vec(std::move(myArr)) {};
        };

[使用myVec1而不是另一个使用myVec1可以带来多少好处(内存,性能等)?

c++ oop constructor initialization move-semantics
1个回答
0
投票

在您的情况下,由于两种情况下的输入均为const,因此性能变化为零

[通常,正确使用move构造函数会带来很大的好处,因为不会有任何不必要的复制和分配-每个std::vector实例都有一个。

© www.soinside.com 2019 - 2024. All rights reserved.