Помощь - Поиск - Пользователи - Календарь
Полная версия: Queue
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
sheka
Как использовать очередь из элементов своего класса?
Т.е. типа STLовского queue <CBall> Ball;
IUnknown
Что значит "как использовать"? Вот так:

Visual C++ .NET/Collections/queue

sheka
Почему-то тот queue, который Collections::queue не такой хороший как тот queue, который Collections::Generic::queue lol.gif
И никто об этом почему-то не пишет.
Т.е., грубо говоря, в Collections::Generic есть те элементы Collections для которых можно использовать свой тип данных?
IUnknown
Цитата
Т.е., грубо говоря, в Collections::Generic есть те элементы Collections для которых можно использовать свой тип данных?
blink.gif

Еще раз можно сформулировать, "... кто на ком стоял?" (С) Собачье сердце

Как пример - .net-овская программа (PascalABC.NET), используется Collection.Generic.Queue с самописным классом. Программа компилируется и работает. Изменишь синтаксис - будет работать под VC.
Спойлер (Показать/Скрыть)
Тебе чего надо-то, расскажи?
sheka
Мне нужен был Collection.Generic.Queue, а этот код - как раз то, что нужно. good.gif
Проблема в том, что гугл на запрос "queue net" выдает http://msdn.microsoft.com/en-us/library/sy...ions.queue.aspx т.е. Collection.Queue, который не разрешает использовать свой тип (да?), а только текст. По крайней мере других примеров не нашел.
Короче Generic в .net - аналог шаблонов с++, а все остальное, "что не есть Generic" типизировать самостоятельно нельзя, да?
IUnknown
Цитата
Collection.Queue, который не разрешает использовать свой тип (да?), а только текст.
Не совсем. Туда можно запихать любой объект. То есть, вообще любой:

uses system.Collections;

type
MyType =
class
private
value : Integer;
public
constructor Create(v : Integer);
begin
value := v;
end;
function Get : Integer;
begin
Get := value;
end;
end;

var
qc : Queue;
t1, t2 : MyType;
f1, f2 : Double;
begin
qc := new Queue;
t1 := new MyType(1);
t2 := new MyType(2);
f1 := 11.4;
f2 := 12.5;
qc.Enqueue(t1);
qc.Enqueue(t2);
qc.Enqueue(f1);
qc.Enqueue(f2);

foreach X : object in qc do
if X is MyType then write(MyType(X).Get, ' ') else write(X, ' ');
end.

выведет
1 2 11.4 12.5 



А вот если тебе надо, чтоб можно было использовать только объекты определенного типа - то используются дженерики.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.