Форум программистов, компьютерный форум CyberForum.ru

Обращение к элементам массива через биты некоторого числа - C++

Восстановить пароль Регистрация
 
 
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 584
Завершенные тесты: 2
12.06.2014, 18:02     Обращение к элементам массива через биты некоторого числа #1
Пусть есть массив Mass из 10 элементов и число А = 510 = 0...0 01012. Мне надо обратиться к 0 и 2 элементам (или к 7 и 9 - это как посмотреть) массива Mass. Можно ли как-нибудь через биты числа А получить доступ к элементам массива Mass?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 18:02     Обращение к элементам массива через биты некоторого числа
Посмотрите здесь:

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... C++
C++ Обращение к элементам массива структур
Обращение к элементам двухмерного динамического массива C++
Обращение к элементам линейного списка через элементы массива указателей C++
Обращение к элементам класса через [] C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 584
Завершенные тесты: 2
13.06.2014, 00:05  [ТС]     Обращение к элементам массива через биты некоторого числа #21
А как такое? По сути должно побыстрее работать, т.к. не надо бегать по всем битам
C++
1
2
3
4
5
6
int A = 123, B, i = 0;
while ((B = (1 << i)) < A) {
   if (B & A)
      // good
   ++i;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SlavaSSU
213 / 158 / 44
Регистрация: 17.07.2012
Сообщений: 580
13.06.2014, 00:13     Обращение к элементам массива через биты некоторого числа #22
это ты так определил все 1-ые биты в А?
ну это не намного быстрее.
если уже сильно хочется, то можно и тот фор переписать!
C++
1
2
3
4
5
6
7
for(int i = 0; i < 30 && (1 << i) <= A; i++)
{
if(A & (1 << i))
{
//good
}
}
еще можешь почитать про битовые маски и про класс bitset в с++
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 584
Завершенные тесты: 2
13.06.2014, 12:54  [ТС]     Обращение к элементам массива через биты некоторого числа #23
Цитата Сообщение от SlavaSSU Посмотреть сообщение
про класс bitset
Он конечно хорош, однако для него нужно указывать размер - константу. А вот я его изначально не знаю...
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.06.2014, 13:23     Обращение к элементам массива через биты некоторого числа #24
Цитата Сообщение от mat_for_c Посмотреть сообщение
А вот я его изначально не знаю...
Ну тогда vector<bool> в помощь.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
13.06.2014, 13:30     Обращение к элементам массива через биты некоторого числа #25
Цитата Сообщение от mat_for_c Посмотреть сообщение
Он конечно хорош, однако для него нужно указывать размер - константу.
boost::dynamic_bitset
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
13.06.2014, 14:21     Обращение к элементам массива через биты некоторого числа #26
Чем обычный стд::set не угодил?
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 584
Завершенные тесты: 2
13.06.2014, 14:43  [ТС]     Обращение к элементам массива через биты некоторого числа #27
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
стд::set
Цитата Сообщение от Tulosba Посмотреть сообщение
vector<bool>
я так понимаю там операции & только в циклах выполнять ?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
13.06.2014, 14:48     Обращение к элементам массива через биты некоторого числа #28
Есть ещё sеt_intеrsеction, или как-то так...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 14:54     Обращение к элементам массива через биты некоторого числа
Еще ссылки по теме:

Обращение к элементам массива используя указатель C++
Обращение к элементам динамического массива через указатели C++
Найти элементы массива, являющиеся квадратами некоторого числа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mat_for_c
 Аватар для mat_for_c
115 / 110 / 19
Регистрация: 26.04.2013
Сообщений: 584
Завершенные тесты: 2
13.06.2014, 14:54  [ТС]     Обращение к элементам массива через биты некоторого числа #29
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Есть ещё sеt_intеrsеction
Через него дольше работать будет, чем сейчас. Если я работаю с set_intersection для индексов массива (а их меньше, чем его длина), то для set и vector будет еще дольше, т.к. придется задействовать всю длину.
Yandex
Объявления
13.06.2014, 14:54     Обращение к элементам массива через биты некоторого числа
Ответ Создать тему
Опции темы

Текущее время: 04:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru