С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351

Инициализация структур, с большим количеством полей

03.10.2018, 10:30. Показов 3008. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, такой вопрос: кто как инициализирует структуры?
И как вам такая функция для инициализации:
C++
1
2
3
4
5
6
template < typename T >
const T& initHeader()
{
    static const T temp = {};
    return temp;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.10.2018, 10:30
Ответы с готовыми решениями:

Работа с большим количеством полей
Здравствуйте! Подскажите пожалуйста как можно упростить такую задачу: Есть форма для ввода данных (317 полей с именами 1,2,3...317)....

Обработка таблиц с большим количеством полей + Spring
Например, появляются таблицы с количеством полей о нескольких десятков до сотни, и нет желания создавать такую сущность в одном классе. ...

Инициализация полей структур
Насколько знаю, у экземпляров классов поля всегда инициализируются значениями по умолчанию перед тем как в дело вступает конструктор....

13
166 / 109 / 57
Регистрация: 30.08.2018
Сообщений: 357
03.10.2018, 10:53
Цитата Сообщение от qwe123qwea Посмотреть сообщение
с большим количеством полей
А почему здесь упоминается большое количество полей?
В чём отличие большого количества полей от маленького в данном случае?
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
03.10.2018, 10:55  [ТС]
JaponDemon, если там 2-3 поля, то можно их в конструкторе инициализировать, а если их там 10 и более, такое себе удовольствие их все переписывать.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
03.10.2018, 11:06
Цитата Сообщение от qwe123qwea Посмотреть сообщение
C++
1
static const T temp = {};
У вас всегда одинаковые значения для инициализации?
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
03.10.2018, 11:11  [ТС]
DrOffset, нет, данная функция предназначена чисто для зануления любой структуры.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
03.10.2018, 11:15
qwe123qwea, Вы зануляете только один раз только объект temp. На другие экземпляры структуры это зануление никак не повлияет.
1
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
03.10.2018, 11:20  [ТС]
Croessmah, то что на другие экземпляры не повлияет это понятно. Ищу как можно меньшими усилиями инициализировать(обнулить) любую структуру данных, чтобы не писать конструкторы и init-функции, для обычного обнуления, если нужно какими-то другими значениями проинициализировать структуру, тут уж от init-функции или конструктора по умолчанию не уйдёшь.
0
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
03.10.2018, 11:28  [ТС]
JaponDemon, по теме есть что?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
03.10.2018, 11:46
memset(&obj, 0, sizeof(obj));
1
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
03.10.2018, 11:57  [ТС]
Croessmah, а если в структуре используются указатели или string?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
03.10.2018, 12:02
Лучший ответ Сообщение было отмечено qwe123qwea как решение

Решение

qwe123qwea, тогда о каком "обнулении" Вы говорите? О value-initialization?
Тогда просто
C++
1
2
3
SomeType obj{};
 
obj = SomeType{};
зачем что-то еще?
1
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
03.10.2018, 12:15  [ТС]
Croessmah, это вариант будет работать если будет конструктор по умолчанию, я правильно понял?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
03.10.2018, 12:40
Лучший ответ Сообщение было отмечено qwe123qwea как решение

Решение

qwe123qwea, это будет работать с типами, которые могут быть инициализированы пустым списком в list-initialization.
Например, это могут быть фундаментальные типы, тогда они будут инициализироваться с помощью zero-initialization, а может быть класовый тип с конструктором по-умолчанию (явно определенный пользователем или неявно сгенерированный компилятором), типы без конструктора по-умолчанию, но с конструктором, принимающим std::initializer_list, массивы таких типов, агрегаты...
1
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
03.10.2018, 12:48  [ТС]
Croessmah, понятно, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.10.2018, 12:48
Помогаю со студенческими работами здесь

Запрос с большим количеством параметров
у меня сайт интернет магазин по продаже ламп, там есть подборка ламп например по количеству ват и там chekbox гаджеты, то есть можно...

Пароль с большим количеством ключей
Доброго времени суток, имеется задумка сделать ввод пароля из множества ключей, т.е пароль не 1 а их к примеру 10 ключей которые подходят к...

Работа с большим количеством данных
Есть форма добавления нового рабочего, примерно 40 полей... Передаются они постом. Первые 10 я описал ручками, ибо они обязательны и там...

QTableView с большим количеством ячеек
Собственно, тормозит, не пойму, почему. Пока тестировал 3-5 столбцов и 5-10 строк - все работало отлично. Но когда работаю с 200 строками -...

Программа с большим количеством форм
Стоит задача сделать программу с большим количеством форм ( около 50), т.е. на форме примерно какой-то текст типа задание, textbox для...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru