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

Заполнить булевский массив goroda[100] значениями false - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
kurban0303
4 / 4 / 0
Регистрация: 01.11.2012
Сообщений: 19
24.11.2012, 22:18     Заполнить булевский массив goroda[100] значениями false #1
Не соображу как это сделать !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
24.11.2012, 22:21     Заполнить булевский массив goroda[100] значениями false #2
C++
1
memset(&goroda[0],0,12);
Оставшиеся 4 через операцию сдвига
Или выбелить 104 бита и выполнять
C++
1
memset(&goroda[0],0,13);
kurban0303
4 / 4 / 0
Регистрация: 01.11.2012
Сообщений: 19
24.11.2012, 22:25  [ТС]     Заполнить булевский массив goroda[100] значениями false #3
а как нибудь полегче нельзя это сделать через цикл например? А то я только юзаю c++
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
24.11.2012, 22:25     Заполнить булевский массив goroda[100] значениями false #4
во время создания массива:
C++
1
bool goroda[100] = {false};
kurban0303
4 / 4 / 0
Регистрация: 01.11.2012
Сообщений: 19
24.11.2012, 22:28  [ТС]     Заполнить булевский массив goroda[100] значениями false #5
Спасибо!
Я просто так писал: bool goroda[100] =false; -без фигурных скопок!

Добавлено через 15 секунд
скобок
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
24.11.2012, 22:42     Заполнить булевский массив goroda[100] значениями false #6
V.A.L.I.D, вы уверены что при
C++
1
bool goroda[100] = {false};
false'ом будут инициализированы все элементы массива? Я часто инициализирую вот так:
C++
1
char goroda[100] = {0,1,4,3};
В таком случае инициализируются только первые 4 элемента. Логично предположить что первый элемент инициализируется вот так:
C++
1
char goroda[100] = {0};
И потом в сети часто встречается запись ... = {0}; потому что 0 - конец строки и таким образом мы показываем что в массиве строка пуста. И такой инициализации достаточно, т.к. ниодна строковая функция не пойдет читать дальше первого элемента.
Поскольку это логично, я всегда считал что так оно и работает. Уточните пожалуйста

Добавлено через 3 минуты
kurban0303, если будете что-то инициализировать через цикл, значйте что memset выполняется быстрее. Особенно в СИ, там применяется restrict.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
24.11.2012, 22:51     Заполнить булевский массив goroda[100] значениями false #7
Цитата Сообщение от Damaks Посмотреть сообщение
V.A.L.I.D, вы уверены что при
C++
1
bool goroda[100] = {false};
false'ом будут инициализированы все элементы массива?
Вот цитата из книги Дейтел. Как программировать на C++. 7 глава
"Если число инициализаторов меньше, чем число элементов в массиве, оставшиеся элементы инициализируются нулями"

получается все правильно. все элементы массива будут 0, т.е. false
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
24.11.2012, 23:02     Заполнить булевский массив goroda[100] значениями false #8
Спасибо, хотя я в этом не вижу логики. Язык, на мой взгляд, всётаки должен строить оптимальные по производительности конструкции и не делать того, что программист не просит. Но это дело вкуса
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
24.11.2012, 23:07     Заполнить булевский массив goroda[100] значениями false #9
вроде все логично, если один из элементов инициализирован, то должны быть инициализированы все, а чем инициализировать, если не нулем?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.11.2012, 23:10     Заполнить булевский массив goroda[100] значениями false #10
Цитата Сообщение от Damaks Посмотреть сообщение
Оставшиеся 4 через операцию сдвига
Или выбелить 104 бита и выполнять
Честно говоря, я не понимаю о чем Вы.
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
24.11.2012, 23:30     Заполнить булевский массив goroda[100] значениями false #11
Цитата Сообщение от go Посмотреть сообщение
Честно говоря, я не понимаю о чем Вы.
Да, тупанул слегка, конечно же так:
C++
1
2
3
4
5
memset(&goroda[0],0,12);
goroda[96]=false;
goroda[97]=false;
goroda[98]=false;
goroda[99]=false;
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.11.2012, 23:34     Заполнить булевский массив goroda[100] значениями false #12
Damaks, bool 1 байт. А я думаю, что где-то есть и по 2 байта. http://ideone.com/vsOX0J
Если нужны биты, то нужно использовать std::bitset.
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
24.11.2012, 23:46     Заполнить булевский массив goroda[100] значениями false #13
1 байт если 1 bool. А если массив bool'ов - они упаковываются в байт. Автор не уточнял что у него какая-та особая система.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2012, 23:58     Заполнить булевский массив goroda[100] значениями false
Еще ссылки по теме:

C++ Заполнить массив случайными значениями
C++ Заполнить массив случайными значениями, лежащими в диапазоне от 50 до 100
Заполнить массив случайными значениями C++

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.11.2012, 23:58     Заполнить булевский массив goroda[100] значениями false #14
Цитата Сообщение от Damaks Посмотреть сообщение
Автор не уточнял что у него какая-та особая система.
Тогда
C++
1
memset(city, 0, 100); // :)
Yandex
Объявления
24.11.2012, 23:58     Заполнить булевский массив goroda[100] значениями false
Ответ Создать тему
Опции темы

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