OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 01 Ноябрь, 2024 03:15

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Есть аналог SET в C#?
СообщениеДобавлено: Среда, 20 Апрель, 2011 13:48 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
BitVector32 ? http://msdn.microsoft.com/en-us/library ... aspx#Y1368

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть аналог SET в C#?
СообщениеДобавлено: Среда, 20 Апрель, 2011 13:59 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Посмотри в сторону битовых операций с целыми числами.
В С++, во всяком случае, так именно делают.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть аналог SET в C#?
СообщениеДобавлено: Среда, 20 Апрель, 2011 14:01 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Меня интересует самый близкий аналог, а ещё лучше --- примеры использования (со ссылками, если кто знает).

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть аналог SET в C#?
СообщениеДобавлено: Среда, 20 Апрель, 2011 14:03 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Вот этот bitvector и есть, других не видел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть аналог SET в C#?
СообщениеДобавлено: Среда, 20 Апрель, 2011 14:10 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Нашел 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 ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть аналог SET в C#?
СообщениеДобавлено: Среда, 20 Апрель, 2011 16:21 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Для побитовых операций с целыми используют тип Enumeration и атрибут [Flags]: http://msdn.microsoft.com/en-us/library/cc138362.aspx


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть аналог SET в C#?
СообщениеДобавлено: Среда, 20 Апрель, 2011 16:56 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Спасибо. Эти 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] это гарантирует?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Есть аналог SET в C#?
СообщениеДобавлено: Четверг, 21 Апрель, 2011 12:25 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
> Есть аналог SET в C#?

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB