Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Множества...   Найти похожие ветки 

 
Mikka ©   (2004-02-06 17:33) [0]

Как задать множество....например, вот такое
("Привет","Здравствуйте","Салют")?

Или как быть с....имеется мнодетсво (Привет,Здравствуйте,Салют)
Как проверить вхождение s="Привет" во вышестояшее множество ???


 
Sandman25 ©   (2004-02-06 17:35) [1]

Никак, множество строк невозможно.


 
Юрий Зотов ©   (2004-02-06 17:35) [2]

Жмем F1 и читаем, а что же такое есть "множество".


 
Тимохов ©   (2004-02-06 17:39) [3]


> Mikka © (06.02.04 17:33)

Штатных средств дельфи для хранения множества строк нет.
Можете сделать сам - TStringList+ методы данного класса IndexOf+Add+Delete


 
VLAD-MAL   (2004-02-06 17:44) [4]

Может, это поможет:

const Digits: array[0..2] of string = ("Раз", "Два", "Три");


 
Mikka ©   (2004-02-06 17:51) [5]

VLAD-MAL (06.02.04 17:44) [4]

Может, это поможет:


ТОгда для проверки вхождения нужно будет прогонять массив в цикле...а для множетсва просто использовать in


 
VLAD-MAL   (2004-02-06 17:57) [6]

Используй TStringList, он может сортироваться и быстрый (двоичный) поиск в нем есть.


 
Digitman ©   (2004-02-06 18:06) [7]


> для проверки вхождения нужно будет прогонять массив в цикле


оператор IN для поддерживаемых типов множеств при отключенной оптимизации зачастую именно это и делает - прогон в цикле


 
Mikka ©   (2004-02-06 18:12) [8]

придется использовать массивы


 
Goida ©   (2004-02-06 18:33) [9]


> Mikka
> ТОгда для проверки вхождения нужно будет прогонять массив
> в цикле...а для множетсва просто использовать in

Так оно кажется на первый взгляд. Как, по твоему, он это делает? Все разом проверяет?


 
Тимохов ©   (2004-02-06 18:37) [10]


> Так оно кажется на первый взгляд. Как, по твоему, он это
> делает? Все разом проверяет?

Это зависит от типа множества.
type
s: set of byte;
begin
if 34 in s then ...
end;
скоррее всего одной командой проверять будет


 
Sandman25 ©   (2004-02-06 18:40) [11]

[10] Тимохов © (06.02.04 18:37)

По-моему, одна команда будет только если 32 члена максимум. То есть, например
var
A: set of (a1,a2,a3...a32);
if a2 in A then.
Для set of byte так не получится ИМХО


 
Тимохов ©   (2004-02-06 18:42) [12]

Sandman25 © (06.02.04 18:40) [11]

var
s: set of byte;
begin
if 45 in s then showmessage("1")
end

еквивалетно

test byte ptr [ebp-$23],$20
jz +$0a
mov eax,$00456668
call ShowMessage


 
Sandman25 ©   (2004-02-06 18:43) [13]

[12] Тимохов © (06.02.04 18:42)

Виноват. Признаю :)



Страницы: 1 вся ветка

Текущий архив: 2004.02.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
3-53364
VictorT
2004-01-27 19:55
2004.02.17
Избавление от селекта внутри делете


4-53825
deema
2003-12-14 18:59
2004.02.17
Clipboard format


1-53599
gid
2004-02-07 18:04
2004.02.17
Как высвободить неиспользуемую оперативу?


3-53358
Крутыш
2004-01-28 13:54
2004.02.17
Отключить сортировку.


11-53443
Boguslaw
2003-05-29 00:00
2004.02.17
One crazy idea...