我想返回一个私有数据成员的STL容器,而不调用整个容器的复制构造函数.
这就是我做的:
#include "point.h" #includeclass A { std::deque a; public: const std::deque & getdq() const { return a; } };
我把它称为另一个班级
A &a; ///a is initialized... auto dq = a.getdq();
但是我在调试器中看到它的dq
地址与类中的地址不同A
,是不是&
意味着它将通过引用传递而不是复制整个双端队列?
是否有另一种方法来传递STL容器而不复制它?
由于您正在使用auto
,您最终会得到一个对象(不是引用!)到a dq.要将其作为参考,请将代码修改为
const auto& dq = a.getdq();
auto
可在此处找到类型扣除规则:http:
//en.cppreference.com/w/cpp/language/template_argument_deduction#Other_contexts