[英]Is it possible to initialize a vector of vectors of non-copyable objects?
是否可以初始化不可復制對象的向量的向量?
class obj : private boost::noncopyable {
// ...
};
vector<vector<obj> > v(10); // OK
for(int i = 0; i < v.size(); ++i)
v[i].resize(10); // ERROR
也
vector<vector<obj> > v(10, vector<obj>(10)); // ERROR
我了解上述代碼為何無法編譯。 我要問的是是否有解決方法。 似乎如果std::vector
具有不需要復制構造函數的成員函數(如resize_from_zero
,那么這將是可行的。
(我的問題是關於C ++ 03,如果這有所作為)
這是不可能的; C ++ 03要求vector
元素必須是CopyConstructible和Assignable。
引用:C ++ 03 [lib.containers.requirements] / 3
存儲在這些組件中的對象的類型必須滿足
CopyConstructible
類型(20.1.3)的要求以及Assignable
類型的其他要求。
其中“這些組件”是指deque
, list
, queue
, stack
, vector
, map
, set
, bitset
。
(也許有或沒有某種方法可以使它看起來可以在特定的編譯器上運行,但這超出了標准C ++的范圍)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.