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