Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
28 / 57 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
1

Особенный массив

30.01.2018, 13:11. Показов 1107. Ответов 19
Метки нет (Все метки)

Добрый день! Не знал даже, как тему назвать, возможно ли в с++ сделать подобный массив:
array[2, "string1", "string2" ] = 300;
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2018, 13:11
Ответы с готовыми решениями:

Особенный палиндром
Нужно проверить строку на палиндром. Только есть особенность: к примеру дана строка: helloolleh...

Особенный партионный учет(1с 8.2)
Всем привет.Народ, в колледже задали организовать партионный учет, но вся фишка в том что запросы...

Сверстать особенный список
Добрый день. Есть вопрос как сверстать такую штуку. Есть список в строку. Первый и последний...

Enum AttributeTargets какой-то особенный?
Привет! Если написать выражение (AttributeTargets.Class | AttributeTargets.Method), то в...

19
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
30.01.2018, 13:21 2
В чем его особенность обрисуйте словами.
0
28 / 57 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
30.01.2018, 13:34  [ТС] 3
обычный массив пишется так:
int i[] = {1,2,3};
Здесь одного типа данные, а как разного сделать?
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
30.01.2018, 13:37 4
Цитата Сообщение от Helldrg Посмотреть сообщение
Здесь одного типа данные, а как разного сделать?
Цитата Сообщение от Helldrg Посмотреть сообщение
array[2, "string1", "string2" ] = 300;
Эм, и какая между этим связь?
0
28 / 57 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
30.01.2018, 13:42  [ТС] 5
Цитата Сообщение от alex white Посмотреть сообщение
В чем его особенность обрисуйте словами.
Цитата Сообщение от Helldrg Посмотреть сообщение
обычный массив пишется так:
int i[] = {1,2,3};
Здесь одного типа данные, а как разного сделать?
Для начала с этим надо разобраться
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
30.01.2018, 13:48 6
Посмотрите в сторону std::tuple
0
28 / 57 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
30.01.2018, 13:57  [ТС] 7
По хорошему лучше структуру сделать и уже после массив структур, но форма записи там такой не будет
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
30.01.2018, 14:02 8
Лучший ответ Сообщение было отмечено Helldrg как решение

Решение

Знаю гуглить это выше ваших сил
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <tuple>
#include <iostream>
#include <string>
#include <stdexcept>
 
std::tuple<double, char, std::string> get_student(int id)
{
    if (id == 0) return std::make_tuple(3.8, 'A', "Lisa Simpson");
    if (id == 1) return std::make_tuple(2.9, 'C', "Milhouse Van Houten");
    if (id == 2) return std::make_tuple(1.7, 'D', "Ralph Wiggum");
    throw std::invalid_argument("id");
}
 
int main()
{
    auto student0 = get_student(0);
    std::cout << "ID: 0, "
              << "GPA: " << std::get<0>(student0) << ", "
              << "grade: " << std::get<1>(student0) << ", "
              << "name: " << std::get<2>(student0) << '\n';
 
    double gpa1;
    char grade1;
    std::string name1;
    std::tie(gpa1, grade1, name1) = get_student(1);
    std::cout << "ID: 1, "
              << "GPA: " << gpa1 << ", "
              << "grade: " << grade1 << ", "
              << "name: " << name1 << '\n';
}
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
30.01.2018, 14:15 9
std::map + std::tuple возможно вам подойдет.
1
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
30.01.2018, 14:17 10
а мапа там зачем?)
0
3420 / 1966 / 374
Регистрация: 09.09.2017
Сообщений: 8,041
30.01.2018, 14:22 11
чтобы отображать строку на индекс массива, наверное
1
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
30.01.2018, 14:27 12
Зачем, если Бог придумал функцию гет? спецом же пример дал)))
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
30.01.2018, 15:29 13
Цитата Сообщение от 1Вирт1 Посмотреть сообщение
Науя если Бог придумал функцию гет? спецом же пример дал)))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <tuple>
#include <map>
#include <string>
#include <iostream>
 
int main()
{
    std::map<std::tuple<int, std::string, std::string>, int> container;
    container[std::make_tuple(2, "string1", "string2")] = 300;
    std::cout << container[std::make_tuple(2, "string1", "string2")];
 
    std::cin.get();
    return 0;
}
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
30.01.2018, 15:34 14
окей а если я захочу держать таплы не только с такими типами?) суть вопроса была в создании массива который может содержать разные типы это тапл в плюсах. вопрос закрыт)
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
30.01.2018, 15:40 15
Цитата Сообщение от 1Вирт1 Посмотреть сообщение
окей а если я захочу держать таплы не только с такими типами?) суть вопроса была в создании массива который может содержать разные типы это тапл в плюсах. вопрос закрыт)
тапл не массив, и в рантайме вы добавить новый тип в него не сможете.
ТС хотел массив структур...
Цитата Сообщение от Helldrg Посмотреть сообщение
По хорошему лучше структуру сделать и уже после массив структур
Добавлено через 9 секунд
Ну да ладно...
0
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
30.01.2018, 15:42 16
я образно сказал, нет не массив а кортеж значений. хотите подискутировать обращайтесь в личку я вас с удовольствием опущу
0
Комп_Оратор)
Эксперт по математике/физике
8724 / 4455 / 598
Регистрация: 04.12.2011
Сообщений: 13,308
Записей в блоге: 16
30.01.2018, 21:52 17
Цитата Сообщение от Helldrg Посмотреть сообщение
Добрый день! Не знал даже, как тему назвать, возможно ли в с++ сделать подобный массив:
array[2, "string1", "string2" ] = 300;
Конечно map. При чём:
map<int. map<string. map<string, T>>>
Здесь T псевдокодом означает - тип элементов массива (вероятно int поскольку 300 же )) ). Мапы нужны для того, чтобы обеспечить уникальность "индексации". В обычном массиве индексы не повторяются. Или их сочетания если не одномерном речь. Мне так кажется.
0
Эксперт С++
8614 / 4177 / 927
Регистрация: 15.11.2014
Сообщений: 9,470
30.01.2018, 22:04 18
Цитата Сообщение от Helldrg Посмотреть сообщение
возможно ли в с++ сделать подобный массив:
array[2, "string1", "string2" ] = 300;
да.
только это будет не массив, а контейнер.
0
28 / 57 / 6
Регистрация: 10.01.2011
Сообщений: 1,231
30.01.2018, 22:35  [ТС] 19
lArtl
я не хотел массив структур)), просто это один из вариантов, причем самый простой и наглядный)
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
30.01.2018, 23:38 20
Цитата Сообщение от Helldrg Посмотреть сообщение
я не хотел массив структур)), просто это один из вариантов, причем самый простой и наглядный)
Окей

Добавлено через 52 минуты
Тогда последняя наброс... использовать std::vector + std::any || std::variant
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2018, 23:38

Нет звука, особенный случай:)
Можете сказать, почему у меня только в программе драйвера есть звук? вот в этой программе нажимаю...

HDD 80 Гб - особенный!(Комп не грузится)
Ребят тут в общем такая проблема: походу системе не хватает питания, я решил отключить 1 из 3 HDD (...

Как прошить P5LD2 SE? (Особенный случай)
Расскажу с самого начала. Друг дал материнку без процессора, я пошел купил обычный одно-ядерный...

У меня какой то особенный System.Windows.Media?
Здравствуйте. Пишу библиотеку классов на .NetFramework 4.5.2, потребовалась нужда использовать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru