Контейнер массивов
От: melenik Россия  
Дата: 21.07.05 09:16
Оценка:
Привет

Не могу никак решить проблему...
Есть базовый класс B. У него есть потомки T, S и другие.
Есть vector<T> и vector<S> или просто массивы T[] или S[], важно то что
хранятся значения.
Надо уметь хранить эти вектора/массивы в списке (list)
Какие есть варианты решения?

С уважением, Мелехин Николай
Posted via RSDN NNTP Server 1.9
Re: Контейнер массивов
От: mukos СССР  
Дата: 21.07.05 09:20
Оценка:
Здравствуйте, melenik, Вы писали:

M>Привет


M>Не могу никак решить проблему...

M>Есть базовый класс B. У него есть потомки T, S и другие.
M>Есть vector<T> и vector<S> или просто массивы T[] или S[], важно то что
M>хранятся значения.
M>Надо уметь хранить эти вектора/массивы в списке (list)
M>Какие есть варианты решения?

M>С уважением, Мелехин Николай


запихивай в лист указатели на эти массивы
Re: Контейнер массивов
От: Lorenzo_LAMAS  
Дата: 21.07.05 09:22
Оценка:
Встроенные массивы хранить в стандартных контейнерах ты не можешь, так как они не соответствуют ряду требований. Зато можешь хранить контейнеры в контейнерах
Of course, the code must be complete enough to compile and link.
Re[2]: Контейнер массивов
От: melenik Россия  
Дата: 21.07.05 10:15
Оценка:
mukos wrote:

> Здравствуйте, melenik, Вы писали:

>
> M>Привет
>
> M>Не могу никак решить проблему...
> M>Есть базовый класс B. У него есть потомки T, S и другие.
> M>Есть vector<T> и vector<S> или просто массивы T[] или S[], важно то что
> M>хранятся значения.
> M>Надо уметь хранить эти вектора/массивы в списке (list)
> M>Какие есть варианты решения?
>
> M>С уважением, Мелехин Николай
>
> запихивай в лист указатели на эти массивы

Так что не очень хочется использовать void*
Совсем информация о типе пропадет
Posted via RSDN NNTP Server 1.9
Re[2]: Контейнер массивов
От: melenik Россия  
Дата: 21.07.05 10:21
Оценка:
Lorenzo_LAMAS wrote:

> Встроенные массивы хранить в стандартных контейнерах ты не можешь, так как

> они не соответствуют ряду требований. Зато можешь хранить контейнеры в
> контейнерах

То что массивы в стандартные контейнеры класть нельзя это я знаю.
Просто, в моем случае банальным vector< vector<T> > не отделаешься,
потому что тип вложенного контейнера от элемента к элементу изменяется
Posted via RSDN NNTP Server 1.9
Re[3]: Контейнер массивов
От: mukos СССР  
Дата: 21.07.05 10:39
Оценка:
Здравствуйте, melenik, Вы писали:

M>Lorenzo_LAMAS wrote:


>> Встроенные массивы хранить в стандартных контейнерах ты не можешь, так как

>> они не соответствуют ряду требований. Зато можешь хранить контейнеры в
>> контейнерах

M>То что массивы в стандартные контейнеры класть нельзя это я знаю.

M>Просто, в моем случае банальным vector< vector<T> > не отделаешься,
M>потому что тип вложенного контейнера от элемента к элементу изменяется

Не знаю . Но если у тебя классы както связанные то можно создать базовый
и пихать указатель на него....
По крайней мере если я правильно понимаю задачу
Re[4]: Контейнер массивов
От: mukos СССР  
Дата: 21.07.05 10:41
Оценка:
Здравствуйте, mukos, Вы писали:

M>Здравствуйте, melenik, Вы писали:


M>>Lorenzo_LAMAS wrote:


>>> Встроенные массивы хранить в стандартных контейнерах ты не можешь, так как

>>> они не соответствуют ряду требований. Зато можешь хранить контейнеры в
>>> контейнерах

M>>То что массивы в стандартные контейнеры класть нельзя это я знаю.

M>>Просто, в моем случае банальным vector< vector<T> > не отделаешься,
M>>потому что тип вложенного контейнера от элемента к элементу изменяется

M>Не знаю . Но если у тебя классы както связанные то можно создать базовый

M>и пихать указатель на него....
M>По крайней мере если я правильно понимаю задачу

Типы совершенно разные то будем подумать
Re: Контейнер массивов
От: Evgeniy13 Россия  
Дата: 21.07.05 10:55
Оценка:
А как ты собираешься определять, в каком элементе list-а какие типы хранятся?
Не все в этом мире можно выразить с помощью нулей и единиц...
Re[2]: Контейнер массивов
От: mukos СССР  
Дата: 21.07.05 13:09
Оценка:
Здравствуйте, Evgeniy13, Вы писали:

E>А как ты собираешься определять, в каком элементе list-а какие типы хранятся?


Ну в базовом классе чисто виртуальную функцию типа virtual LPSTR WnoAreYou()=0;
ну и в потомках перегрузить
типа

LPSTR WhoAreYou()
{
return "Son1";
}
Типа так
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Контейнер массивов
От: Evgeniy13 Россия  
Дата: 21.07.05 15:16
Оценка:
Это очень плохо, как ты хочешь это сделать. Уж не знаю, зачем тебе это нужно.
Ну пусть так, тогда можно извратиться, например, так:
struct MyBase
{
  virtual int GetType() = 0;
};

struct MyVector
{
  virtual MyBase * GetItem(int index) = 0;
};

template <class T>
struct Vector : MyVector
{
  vector<T> array;
  MyBase * GetItem(int index) { return &array[index]; }
};

затем используешь

struct A : MyBase
{
  int GetType() { return 0; }
};

struct B : MyBase
{
  int GetType() { return 1; }
};

Vector<A> v1;
Vector<B> v2;

list<MyVector *> my_list;
my_list.push_back(&v1);
my_list.push_back(&v2);
Не все в этом мире можно выразить с помощью нулей и единиц...
Re[4]: Контейнер массивов
От: Evgeniy13 Россия  
Дата: 21.07.05 15:18
Оценка:
Правда тут проще вообще отделаться одним базовым классом для хранимых объекотов
Не все в этом мире можно выразить с помощью нулей и единиц...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.