Сообщения

Показаны сообщения с ярлыком "структуры данных"

Битовый вектор

В посте О битовых операциях  были рассмотрены логические побитовые операции и побитовые сдвиги. В качестве примеров были взяты битовые флаги и множества. Если применения битовых флагов вообщем то понятно, то для множества необходима структура данных и набор алгоритмов по работе с ней. В книге Донован А. Керниган Б. - Язык программирования Go приведен пример битового вектора. Такая структура хорошо подходит для множества небольших положительных чисел над которым часто проводят операции объединения, пересечения, разность и пр. Реализуем на Go структуру и основные методы. Тип вектора имеет одно поле. Срез беззнаковых целочисленных значений, каждый бит которых представляет возможный элемент множества. type IntSet struct { words [] uint } Нам понадобится узнать размер слова const sizeWord = 32 << (^ uint ( 0 ) >> 63 ) На 32 разрядных платформах sizeWord будет равен 32, на 64 соответственно 64. Когда не часто работаешь с битовыми операциями может...