OberonCore
https://forum.oberoncore.ru/

Есть аналог SET в C#?
https://forum.oberoncore.ru/viewtopic.php?f=27&t=3415
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Среда, 20 Апрель, 2011 13:48 ]
Заголовок сообщения:  Есть аналог SET в C#?

BitVector32 ? http://msdn.microsoft.com/en-us/library ... aspx#Y1368

Или есть что попроще?

P.S. Примеры альтернативных механизму "SET" решений при проверке на принадлежность: http://govnokod.ru/5104. Обсуждают, по-моему, серьёзно...
Вложение:
1.png
1.png [ 72.89 КБ | Просмотров: 7659 ]
Вложение:
2.png
2.png [ 89 КБ | Просмотров: 7659 ]
Вложение:
3.png
3.png [ 57.72 КБ | Просмотров: 7660 ]
Вложение:
4.png
4.png [ 39.72 КБ | Просмотров: 7659 ]

Автор:  Валерий Лаптев [ Среда, 20 Апрель, 2011 13:59 ]
Заголовок сообщения:  Re: Есть аналог SET в C#?

Посмотри в сторону битовых операций с целыми числами.
В С++, во всяком случае, так именно делают.

Но если нужен доступ к биту по индексу, то либо использовать реализованный bitvector, либо скоренько написать свой попроще.

Автор:  Евгений Темиргалеев [ Среда, 20 Апрель, 2011 14:01 ]
Заголовок сообщения:  Re: Есть аналог SET в C#?

Меня интересует самый близкий аналог, а ещё лучше --- примеры использования (со ссылками, если кто знает).

про побитовые операции я в курсе, спасибо

Автор:  Валерий Лаптев [ Среда, 20 Апрель, 2011 14:03 ]
Заголовок сообщения:  Re: Есть аналог SET в C#?

Вот этот bitvector и есть, других не видел.

Автор:  Евгений Темиргалеев [ Среда, 20 Апрель, 2011 14:10 ]
Заголовок сообщения:  Re: Есть аналог SET в C#?

Нашел BitArray (http://msdn.microsoft.com/en-us/library ... array.aspx)

Вы не про него?

Поиск MSDN по bitvector выдаёт на первом месте
- BitVector32 Structure (System.Collections.Specialized)
- c# - Why BitVector 32 structure is more efficient than BitArray ...

Автор:  Peter Almazov [ Среда, 20 Апрель, 2011 16:21 ]
Заголовок сообщения:  Re: Есть аналог SET в C#?

Для побитовых операций с целыми используют тип Enumeration и атрибут [Flags]: http://msdn.microsoft.com/en-us/library/cc138362.aspx

Автор:  Евгений Темиргалеев [ Среда, 20 Апрель, 2011 16:56 ]
Заголовок сообщения:  Re: Есть аналог SET в C#?

Спасибо. Эти enumeration умеют выводиться как множество (p://msdn.microsoft.com/en-us/library/sy ... ibute.aspx)
Код:
All possible combinations of values of an Enum with FlagsAttribute:

  0 - Black
  1 - Red
  2 - Green
  3 - Red, Green
  4 - Blue
  5 - Red, Blue
  6 - Green, Blue
  7 - Red, Green, Blue
  8 - 8
Чем-то ещё от использования просто целых (для представления множества) они отличаются? Определять их значения как степени двойки надо вручную, или атрибут [flags] это гарантирует?

Автор:  Сергей Губанов [ Четверг, 21 Апрель, 2011 12:25 ]
Заголовок сообщения:  Re: Есть аналог SET в C#?

> Есть аналог SET в C#?

В C# работа с битами осуществляется прямо над целым числом как в обычном Си.

Всякие там битвекторы есть просто библиотечные нашлёпки поверх битовых операций над целыми.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/