1 | |
Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.?10.08.2019, 23:35. Показов 6966. Ответов 119
Метки структурные массивы (Все метки)
Такой вопрос: я хочу создать одномерный массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться bool, с 10 по 14 будет храниться int. Я видел пример со структурами как раз на этом форуме, но я потерял ссылку на сайт? Можно ли создать такой массив и какими способами?
0
|
10.08.2019, 23:35 | |
Ответы с готовыми решениями:
119
Создать базу из трех сотрудников, где будут храниться их имена Можно ли в com-сервере создать массив в котором будут храниться данные какое-то время Создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых уже будут храниться различные типы данных Создать централизованную базу данных, где будут храниться все клиенты, всех офисов |
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
|
|
10.08.2019, 23:55 | 2 |
Nexi99, да легко. Создаёшь класс, который имеет перегруженную операцию индексации и вуаля.
Добавлено через 41 секунду В С++17 появились ещё tupl: https://ru.cppreference.com/w/cpp/utility/tuple. Добавлено через 2 минуты
1
|
Заблокирован
|
||||||
10.08.2019, 23:57 | 3 | |||||
а нафига это надо?
2
|
"C with Classes"
|
||||||
11.08.2019, 01:17 | 5 | |||||
нет, в массиве по определению хранятся однотипные и смежные элементы, но есть класс std::any, нужна поддержка стандарта C++17.
2
|
Заблокирован
|
||||||
11.08.2019, 07:06 | 8 | |||||
0
|
599 / 436 / 136
Регистрация: 22.11.2017
Сообщений: 1,340
|
||||||
11.08.2019, 09:21 | 9 | |||||
Nexi99, привет!
Я не советую такое делать. Чисто экспериментально можно через std::any, как предложил _stanislav, можно через std::valiant, как предлагаю я. Так как мы знаем какие именно типы может принимать элемент массива. Для работы этого кода также нужна поддержка C++17, так как std::variant доступен в C++ начиная с 17 стандарта. Присоединяюсь к Verevkin: для чего тебе нужна такая сущность? Мне интересно. Извини, но я не знаю, как здесь (в рамках этой задачи) std::tuple использовать: 1 элемент кортежа заполнен, в остальных заглушки? Я честно не пойму, что ты имел ввиду, говоря про std::tuple в этом вопросе.
0
|
599 / 436 / 136
Регистрация: 22.11.2017
Сообщений: 1,340
|
||||||||||||||||
11.08.2019, 10:02 | 10 | |||||||||||||||
std::tuple появился в C++11, на сколько я знаю. В C++17 сделали возможным автоматический вывод типа шалона для std::tuple, std:: pair и иных классов.
До C++17
std::variant представляет обновлённую версию union, к которой прикручен механизм сообщающий какого типа значение хранится в конкретно взятом объединении. std::variant похож на std::tuple при объявлении
кортеж (std::tuple) обязан иметь все значения, что указаны в шаблоне в соответствии по типам (первое double, второе bool, третье int), а std::variant имеет одно значение типа одного из шаблонов или double или bool или int, но оно обязательно должно быть.
0
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
||||||
11.08.2019, 11:17 | 11 | |||||
1
|
599 / 436 / 136
Регистрация: 22.11.2017
Сообщений: 1,340
|
||||||
11.08.2019, 12:52 | 12 | |||||
Я подредактировал свой код.
Кликните здесь для просмотра всего текста
0
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|
11.08.2019, 13:47 | 14 |
То что он хочет - это как раз таки массив, а какой тип он "содержит" - это уже другой вопрос. Выше и привели несколько примеров структур, которые могут хранить разные типы данных. Создаём МАССИВ структур и получаем ответ на вопрос.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
|
|
11.08.2019, 15:21 | 15 |
массив состоит из однородных членов!
обращение к массиву a[i]=*(a+i) как будешь обращаться если размеры элементов разные? массив структур и массив разношерстных элементов это все таки разные вещи ? этак и с объединениями могу зафигачить
0
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|
11.08.2019, 15:27 | 16 |
Массив он, как говорится, и в африке массив
Вы же не будете утверждать, что int list[10]; - массив, а MySuperType list[10]; - не массив? В этом и прелесть C++ - фигачте как умеете, лишь бы это работало и выполняло требуемые условия. А топикстартер посмотрит на все возможные варианты и, возможно, определится что конкретно он хотел: массив структур или массив «разношерстных элементов» и поймёт что можно, а что нельзя.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
|
||||||||||||||||
11.08.2019, 15:45 | 17 | |||||||||||||||
нет не буду
а вот double[5]bool[5]int[5] (даже не знаю как написать),массивом точно не является А ТС именно это и надо следовательно ТС не знает что такое массив и объяснить это ему наша задача для решения задачи(какой?) выбран неправильный инструментарий вполне возможно что правильней описать три массива
0
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|
11.08.2019, 16:17 | 18 |
Так зачем выдумывать то, о чем тут и не идет речи?
У нас тут шоу "угадай-ка"? Если так, то пардон. Вопрос поставлен вполне четко и ясно: Не по теме: Хорошо когда есть c++11/17/20 - можно базовые вещи называть костылями, особенно когда не знаешь как с ними работать :) Есть тип variant, который в каждой библиотеке реализован по своему, но как правило там используется union. Никому никогда не приходило в голову называть этот тип костылём. И миллионы других библиотек работают с этими variant и ни у кого ничего не стреляет: QVariant::Private::Data С приходом новых стандартов этот тип возможно и модернизировался шаблонами или всякими std::tuple и т.д., но никак не потому что union - это костыль, просто с ним сложнее/неудобнее работать. Нужно заново выделять память при смене типа данных в union, освобождать её - всё "вручную". Но это не костыль, а особенность работы с конкретным типом данных. Если так мыслить, то весь С++ - явный костыль. Используйте PHP.
0
|
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
|
|
11.08.2019, 16:41 | 20 |
Ещё раз!
Конечно не будете, вы же сами понимаете, что это нелогично. Нет понятия "массив разношерстных данных". Есть понятие массив. И я могу положить в массив что угодно и сколько угодно
0
|
11.08.2019, 16:41 | |
11.08.2019, 16:41 | |
Помогаю со студенческими работами здесь
20
Получить массив, где будут храниться индексы строк матрицы, в которых есть равные элементы Создать класс, в котором информация будет храниться в хеше. Комментарии. Создать модуль, в котором будет храниться процедура создания картинки дан массив целых чисел в котором храниться 20 тысяч элементов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |