![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
kutuzov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Добрый день
У меня есть массив битов. char * mask; mask = new char[MaskSize]; Надо написать функцию, вырезаюшую из массива биты от m до n (размер массива естественно уменьшается) т.е. Пишу функцию CutMask(m,n) Не очень у меня получается что-то ... может кто подскажет как ?? Неплохо бы на примере... ![]() ![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Т.е. если я правильно понял - этот массив рассматривается как длиннющая последовательность битов?
Или каждый символ представляет собой представления битов? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Anikmar, я так понял - все таки второе..
Вопрос на засыпку - MaskSize > 4 или нет? От этого, как мне кажется - много чего зависит... |
|||
|
||||
Frage |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 17.8.2006 Репутация: нет Всего: нет |
Без пояснения решения не найти - если MaskSize==3, то мask массив из 3-х бит или 24? А удалять что-либо можно только перекопировав содержимое в новую строку, убив старую
|
|||
|
||||
kutuzov |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Рассматривается как последовательность битов. т.е. есть некий список элементов. Информация о том использовать их или нет сохраняется в массив. таким образом, например: есть 12 элементов. из них установлены только первый и 3й. Битовый массив из 2х байтов. массив будет выгладить так: 10100000 00000000 (т.к. установлены только 1й и 2й элемент) Добавлено @ 17:00
MaskSize==3 то массив из 8 бит(1 байт). как создать массив из 3х бит, а уж тем более записать можно я не знаю... |
||||
|
|||||
GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 1 Всего: 14 |
А не легче тогда создать структуру?
Если нужно использовать массив, и при этом динамически удалять эллементы, то можно использовать вектор. -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
задача учебная? Если нет то, думаю, std::vector<bool> тебе поможет
Это сообщение отредактировал(а) zkv - 19.1.2007, 17:32 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Лучше std::bitset
-------------------- ... |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
cia |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 15.1.2007 Репутация: нет Всего: 4 |
А много ли элементов в массиве?
Если не очень много, то может проще было бы использовать все-таки 1 байт = 1 биту (флагу) ? Тогда функция будет заключаться в копировании части строки "из середины в начало" и уменьшении ее длины. zkv, поочередно удалить каждый элемент? |
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
хмм, всмысле нулевой и второй? или первый и третий.. а биты ты считаешь слева направо?
можешь привести пример исходных данных и результата работы функции? -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
kutuzov |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
элементов много. Если битовый массив, то примерно 1Мб выходит. Если для каждого флажка использовать не бит а байт уже не метр получается ![]() - потери памяти - скорости - и плюс ко всему конфиг 1 Мб или 8 мб читать/писать 2 больше разницы... Добавлено @ 19:12
Пробовал через bitset перегонять... const int Mask1Size=OldSize; bitset<Mask1Size> bOld; получаю Template argument must be a constant expression т.е. на сколько понял размер надо задавать при компиляции... |
||||
|
|||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
std::vector<bool> - массив битов, а не байтов
|
||||
|
|||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Интересно, если STL - шаблонные классы, то как они реализовали в одном шаблоне и биты и другие типы? т.е. vector<int> и vector<bool> получается разные шаблоны? Я думал, что шаблонный класс реализован одинаково с точки зрения внутренних конструкций... template class<T> Т.е. получается, что конкретно для класса bool меняется реализация? Ведь нет типа данных Бит? |
|||
|
||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
я о нем, во всяком случае, ничего не знаю ![]()
примечание к предыдущей цитате ![]()
Ссылка на эту главу есть в закрепленной теме форума |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |