当前位置:  开发笔记 > 编程语言 > 正文

关于返回STL容器数据成员而不调用复制构造函数

如何解决《关于返回STL容器数据成员而不调用复制构造函数》经验,为你挑选了1个好方法。

我想返回一个私有数据成员的STL容器,而不调用整个容器的复制构造函数.

这就是我做的:

#include "point.h"
#include 

class A {
    std::deque a;
public:
    const std::deque& getdq() const { return a; }
};

我把它称为另一个班级

  A &a;
  ///a is initialized...
  auto dq = a.getdq();

但是我在调​​试器中看到它的dq地址与类中的地址不同A,是不是&意味着它将通过引用传递而不是复制整个双端队列?

是否有另一种方法来传递STL容器而不复制它?



1> SergeyA..:

由于您正在使用auto,您最终会得到一个对象(不是引用!)到a dq.要将其作为参考,请将代码修改为

const auto& dq = a.getdq();

auto可在此处找到类型扣除规则:http: //en.cppreference.com/w/cpp/language/template_argument_deduction#Other_contexts

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有