Мне нужно вставить некоторые элементы в существующий вектор, когда я назначаю их массиву.
Я могу инициализировать их, а затем копировать, но мне нужно выполнить обе операции одновременно.
Скажем, есть базовый класс TestBase и производный класс TestOne, TestTwo, TestThree.Я инициализировал их на основе типа, используя перечисление, как показано.У меня есть существующий вектор, в который я хочу вставить эти элементы.
enum class Type : std::uint8_t {
TYPE_ONE,
TYPE_TWO,
TYPE_THREE
}; //enum class Type
struct _ds {
enum class Type type;
std::shared_ptr<TestBase> p_str;
};
std::vector<std::shared_ptr<TestBase>> vec_base_ptrs;
int main(int argc, char *argv[]) {
_ds a_ds[] = {{Type::TYPE_ONE,std::make_shared<TestOne>()},
{Type::TYPE_TWO,std::make_shared<TestTwo>()},
{Type::TYPE_THREE,std::make_shared<TestThree>()}};
}
Теперь есть возможность, где я могу сделать следующее, где я могу поместить указатели в вектор, а также получить его.в массиве при том же самом.Возможно ли это.
_ds a_ds[] = {{Type::TYPE_ONE,{vec_base_ptrs.push_back(std::make_shared<TestOne>())}},
{Type::TYPE_TWO,{vec_base_ptrs.push_back(std::make_shared<TestTwo>())}},
{Type::TYPE_THREE,{vec_base_ptrs.push_back(std::make_shared<TestThree>())}}};
Пожалуйста, дайте мне знать, как это сделать.Также предложите, если есть какие-либо другие структуры данных, которые могут помочь в решении этой проблемы, с примечанием, что мне нужно заполнить векторы shared_ptrs, поскольку я получаю это из сторонней библиотеки.