向量的 emplace_back - 作为构造函数参数的向量
vector's emplace_back - vector as a constructor argument
我有以下结构:
struct A{};
struct B
{
B(std::shared_ptr<A> a, int x): a_(a), x_(x){}
std::shared_ptr<A> a_;
int x_;
};
struct C
{
C(std::vector<B> v, bool c){}
};
我想将 C 类型的对象插入向量,但以下代码不起作用:
std::vector<C> vecC;
vecC.emplace_back({std::make_shared<A>(), 2}, false);
或者这种方式对 emplace_back
没有意义:
vecC.emplace_back(B{std::make_shared<A>(), 2}, false);
我应该如何将 C 类型的对象插入向量中?
您忘记了 std::vector
的另一副牙套。此外,您需要告诉 emplace_back()
您传递给它的参数类型,因此您需要调用 std::vector
的构造函数:
vecC.emplace_back(std::vector{ B{ std::make_shared<A>(), 2 } }, false);
或者,不要使用 emplace_back()
而是使用 push_back()
:
vecC.push_back({{{std::make_shared<A>(), 2}}, false});
我有以下结构:
struct A{};
struct B
{
B(std::shared_ptr<A> a, int x): a_(a), x_(x){}
std::shared_ptr<A> a_;
int x_;
};
struct C
{
C(std::vector<B> v, bool c){}
};
我想将 C 类型的对象插入向量,但以下代码不起作用:
std::vector<C> vecC;
vecC.emplace_back({std::make_shared<A>(), 2}, false);
或者这种方式对 emplace_back
没有意义:
vecC.emplace_back(B{std::make_shared<A>(), 2}, false);
我应该如何将 C 类型的对象插入向量中?
您忘记了 std::vector
的另一副牙套。此外,您需要告诉 emplace_back()
您传递给它的参数类型,因此您需要调用 std::vector
的构造函数:
vecC.emplace_back(std::vector{ B{ std::make_shared<A>(), 2 } }, false);
或者,不要使用 emplace_back()
而是使用 push_back()
:
vecC.push_back({{{std::make_shared<A>(), 2}}, false});