我想返回一个私有数据成员的STL容器而不调用整个容器的复制构造函数。
这就是我所做的:
A &a;
///a is initialized...
auto dq = a.getdq();
我用
在另一个类中调用它dq
但是我在调试器中看到A
的地址与类&
的地址不同,plot(c(imf[1,]), ylim=c(-100, 100),type="l", col="blue")
表示它将通过引用传递而不是.modal-dialog{
position:absolute;
width: 500px;
left: 50%;
bottom:0;
margin-left: -250px;
}
不要复制整个deque?
是否有其他方法可以传递STL容器而不复制它?
答案 0 :(得分:7)
由于您正在使用auto
,因此您最终会得到一个对象(不是引用!)作为dq。要将其作为参考,请将代码修改为
const auto& dq = a.getdq();
auto
类型扣除规则可在此处找到:
http://en.cppreference.com/w/cpp/language/template_argument_deduction#Other_contexts
答案 1 :(得分:3)
你认为你写的是
decltype(auto) dq = a.getdq();
这表示右侧表达的参考性和常数等。然而
auto dq = a.getdq();
剥离引用和consts。另一种做同样事情的方法是
const auto & dq = a.getdq();
这样你就可以添加constness和referenceness了。这是推荐的方法。