вектор с неопределенным размером элемента и количеством элементов

Я хочу определить некоторые произвольные свойства для каждой точки в некоторых классах, но тип и количество свойств не были определены ранее. Итак, мне нужно сохранить их в векторе, но я не знаю, как определить вектор, чтобы каждый элемент мог быть не определенного размера и иметь различное количество полей. Класс выглядит следующим образом:

class UnstructuredMesh
{
std::vector<size_t>     m_cellBegIndices;       //!< Cell Beginning Indices
std::vector<size_t>     m_faceBegIndices;       //!< Face Beginning Indices
std::vector<OSG::Pnt3f> m_points;               //!< Points
std::vector<????, ????> m_pointProperties;      //!< Point Properties
};

Может кто-нибудь, пожалуйста, помогите мне с этой проблемой?

0

Решение

Хорошо, хорошо, учитывая комментарии, которые я решил, я приведу пример того, что я предложил. Трудно точно понять, что вы делаете, но это предполагает, что вы заполняете вектор некими исполняемыми компонентами, которые должны выполнять разные задачи.

Я вижу, что вы уже решили свою проблему, но что-то вроде ниже может сделать более понятным решение. Очевидно, что в реальном приложении освобождение памяти для вектора должно выполняться в некоторой лучшей форме, и не забывайте включать виртуальный деструктор в реальную жизнь. Но это компилируется и запускается.

#include "windows.h"#include <tchar.h>
#include <vector>
#include <stdio.h>

class iface
{
public:
virtual void execute() = 0;

};

class do_stuff_A : public iface
{
private:
int A;
int B;

public:
do_stuff_A()
{
A = 1;
B = 2;
}

void execute() override
{
printf("\nA is %d, B is %d", A, B);
}
};

class do_stuff_B : public iface
{
private:
double A;
double B;
double C;

public:
do_stuff_B()
{
A = 1.1f;
B = 2.2f;
C = 3.2f;
}

void execute() override
{
printf("\nA is %f, B is %f, C is %f", A, B);
}
};

int _tmain(int argc, _TCHAR* argv[])
{

std::vector<iface*> my_vec;

my_vec.push_back(new do_stuff_A());
my_vec.push_back(new do_stuff_B());

my_vec[0]->execute();
my_vec[1]->execute();

Sleep(3000);

for (int i = 0; i < my_vec.size(); i++)
{
delete my_vec[i];
}

return 0;
}
0

Другие решения


По вопросам рекламы [email protected]