让我们说我们有A类:
Class A
{
public:
A() = delete;
A( const int & y )
: x( y )
{}
private:
int x;
};
Run Code Online (Sandbox Code Playgroud)
如何创建一个std::vector类型A并给出A构造函数的参数?我将如何添加3到vector?
Mik*_*our 21
如何创建一个
std::vector类型A并给出A构造函数的参数?
std::vector<A> v1(10, 42); // 10 elements each with value 42
std::vector<A> v2{1,2,3,4}; // 4 elements with different values
Run Code Online (Sandbox Code Playgroud)
我如何将3加到向量中?
v.emplace_back(3); // works with any suitable constructor
v.push_back(3); // requires a non-explicit constructor
Run Code Online (Sandbox Code Playgroud)
缺少默认构造函数只意味着你不能做需要的操作,比如
vector<A> v(10);
v.resize(20);
Run Code Online (Sandbox Code Playgroud)
两者都将默认构造的元素插入到矢量中.
模板不是一次性实例化的:它们只实例化所需的内容.A满足以下所有条件(构造空向量)有效:
std::vector<A> v;
Run Code Online (Sandbox Code Playgroud)
但是,由于A没有默认构造函数,以下(创建具有默认初始化内容的向量)将失败:
std::vector<A> v(100);
Run Code Online (Sandbox Code Playgroud)
这是一件好事.但是,有效的方法将被实例化:
v.emplace_back(42);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10336 次 |
| 最近记录: |