Я полностью смущен тем, как я могу хранить объекты с разными типами данных в одном векторе. Например, у меня есть Class1 с некоторыми указанными данными и Class2 с другим. Мне нужно поместить их в вектор в том порядке, в котором они созданы. Можно ли это сделать?
Вот несколько альтернатив.
Если разные типы данных, которые вы хотите сохранить, являются типами POD, вы можете создать объединение для их хранения.
union u {
int intvalue;
double double value;
}
vector<u> vec;
Вы также можете хранить указатели на экземпляры разрозненных типов через объединение.
Недостатком таких объединений является то, что вам нужно каким-то образом узнать, какой тип фактически хранится в каждом экземпляре.
Или, если вы хотите хранить объекты, вы можете упорядочить объекты для всех наследуемых от общего базового класса, а затем выделять экземпляры вашего класса в кучи и хранить указатели на экземпляры в векторе. В зависимости от того, как ваши объекты будут использоваться, вам нужно будет указать указатели и/или использовать виртуальные методы для вызова методов на объектах.
class base {
...
}
class d1 : base {
...
}
vector<base*> vec;
vec.push_back((base*)new d1());
Или вы можете использовать boost.variant. Это, возможно, лучший способ, потому что он является типичным по сравнению с другими методами, о которых я упоминал.