这在某种程度上与我之前提出的关于对向量使用emplace_back的问题有关。emplace_back() vs push_back when inserting a pair into std::vector 现在我的问题与在向量的向量上使用emplace_back有关。since this makes a copy
//and is thus equival
在使用push_back of std::vector时,我可以推送向量本身的元素,而不必担心由于重新分配而使参数无效:
std::vector<std::string> v = { "a", "b"但是,在使用emplace_back时,std::vector将参数转发给std::string的构造函数,以便在向量中进行复制构造。这使我怀疑向量的重新分配发生在复制新字符串之前(否则它不会被分配到位)
hire(Worker::Details details) = 0;}; 然后我有了这两个抽象类的实现workers.push_back(std::make_unique<DerivedWorker>(details)会抛出编译器error: no matching member function for call to 'push_back类似地,您将如何使用workers.emplace_back(...)执行相同<em