小编CrS*_*rSe的帖子

如何在c ++ 11中返回类成员向量

我读了几篇关于如何从方法返回向量的帖子包括以下内容:

  1. c11 rvalues和移动语义混淆返回语句

  2. 希望速度超值

  3. 为什么visual studio不执行返回值优化rvo

  4. Wiki - 返回值优化

我仍然对如何在VS2013中以正确的方式传递向量感到困惑,以及此代码中的以下方法之间的区别(问题在注释中标记):

class Foo{
 private:
   std::vector<int> vect;

 public:
     //1 - classic way?
    void GetVect(std::vector<int>& v)
      {
         v = vect;// assignment with swap?
      }

    //2 - RVO?
    std::vector<int> GetVect()
      {
        return vect;
      } 

    //3 - RVO with const?
    std::vector<int> GetVect() const
      {
        return vect;
      }

    //4 - just move?
    std::vector<int> GetVect() 
      {
        return std::move(vect);
      }  

     //5 - move with {}?
    std::vector<int> GetVect() 
      {
        return { std::move(vect) };
      }  
 }
Run Code Online (Sandbox Code Playgroud)

所以我不确定// 1是否是// 2的显式形式,不确定3是否有效.4和5之间有什么区别?如果RVO适用于VS2013中的矢量,如何测试?

c++ std c++11

10
推荐指数
1
解决办法
6177
查看次数

标签 统计

c++ ×1

c++11 ×1

std ×1