[英]Vector as class member
class A
{
private:
std::vector<int>myvec;
public:
const std::vector<int> & getVec() const {return myvec;}
};
void main()
{
A a;
bool flag = getFlagVal();
std::vector<int> myVec;
if(flag)
myVec = a.getVec();
func1(myVec);
}
在myVec= a.getVec()
行中,有一个vector
的副本,尽管它是通过引用返回的。 如果flag
不是true
,将传递一个空向量。
无论如何要避免这个副本?
func1(flag ? a.getVec() : std::vector<int>());
是一种方式。
如果func1
通过const
引用获取向量,这将起作用,因为两个匿名临时对象都可以绑定到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.