Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正确的数组值是否可以提高性能?_C++_Rvalue Reference - Fatal编程技术网

C++ 正确的数组值是否可以提高性能?

C++ 正确的数组值是否可以提高性能?,c++,rvalue-reference,C++,Rvalue Reference,例如,我有 class A { std::array<Object, 5> m_objects; A(std::array<Object, 5> objects) : m_objects(std::move(objects)) //does using right value will improve // performance in some cases??

例如,我有

class A
{
    std::array<Object, 5> m_objects;

    A(std::array<Object, 5> objects)
       : m_objects(std::move(objects)) //does using right value will improve 
                                       // performance in some cases??
    {}
};
A类
{
std::数组m_对象;
A(std::数组对象)
:m_objects(std::move(objects))//使用正确的值是否会提高性能
//某些情况下的性能??
{}
};

在构造函数中使用正确的值是否会在某些情况下提高性能???

您还应该添加另一个构造函数来接受临时数组

class A
{
    std::array<Object, 5> m_objects;

    A(std::array<Object, 5> objects)
       : m_objects(std::move(objects)) 
    {}
    A(std::array<Object, 5>&& robj): m_objects(std::move(robj))
    {}
};
A类
{
std::数组m_对象;
A(std::数组对象)
:m_对象(标准::移动(对象))
{}
A(std::array&&robj):m_对象(std::move(robj))
{}
};
您也可以使用
转发引用
T&
,但为了清楚起见,我将其保留在这里。这是更明确的

还要注意,在这种情况下使用move并不总是保证性能。对于
数组
移动意味着移动
数组持有的元素。在本例中,
对象
类实例

为了更好地执行此操作,您应该提供一个
将构造函数
移动到
对象
类,否则这里的移动操作只会是单个
对象
实例的副本


注意:
对象的移动构造函数应该比复制构造函数便宜。否则,在性能方面,移动和复制之间就没有区别。

如果不想提高性能(在某些情况下),请使用通用参考资料。可能的复制?“正确的价值观”?你是说“右值”?!