Alo*_*mir 5 c++ boost vector shared-ptr c++11
在一个函数中,"返回"会更合适吗?
A. vector<Foo>?
B. shared_ptr<vector<Foor>>?
换句话说,哪个副本不那么重,你会做什么,为什么?
我认为shared_ptr<vector<T>>很少回来很有用.如果有几个对象可以容纳他们可以操作的共享向量,我只会这样做.对我而言,这表明存在设计缺陷.一个更好的选择可能是通过const引用返回.这避免了(可能很昂贵的)复制操作,但是不允许访问者改变向量.
如果您要返回当地,std::vector您也可以通过参数返回.
如果你真的想要返回shared_ptr<vector<T>>,请考虑是否shared_ptr<const vector<T>>能完成这项工作(矢量可以被许多人检查,但只能由所有者操纵).
但是A通常比B贵,但返回值优化通常适用于此处.对于C++ 11,std::vector有一个移动构造函数,可以保证返回本地std::vector不需要昂贵的复制操作.
记住,不要过早优化:)
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |