繁体   English   中英

是否可以初始化不可复制对象的向量的向量?

[英]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类型的其他要求。

其中“这些组件”是指dequelistqueuestackvectormapsetbitset

(也许有或没有某种方法可以使它看起来可以在特定的编译器上运行,但这超出了标准C ++的范围)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM