让我们说我们有A类:
Class A
{
public:
A() = delete;
A( const int & y )
: x( y )
{}
private:
int x;
};
如何创建std::vector
类型A
并为A
的构造函数提供参数?如何将3
添加到vector
?
答案 0 :(得分:21)
如何创建类型为
mysql_fetch_assoc()
的{{1}}并为std::vector
的构造函数提供参数?
A
我如何向矢量添加3?
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
这两个元素都将默认构造的元素插入到矢量中。
答案 1 :(得分:6)
模板不能一次性实例化:它们只实例化所需的内容。 A
满足以下所有条件(构造空向量)有效:
std::vector<A> v;
但是,由于A
没有默认构造函数,因此以下(创建具有默认初始化内容的向量)将失败:
std::vector<A> v(100);
这是一件好事。但是,有效的方法将被实例化:
v.emplace_back(42);
答案 2 :(得分:2)
诀窍在于如何向向量中添加元素以及您使用的向量的成员函数。
std::vector<A> v;
v.emplace_back(3);