[英]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.