С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
3 / 3 / 0
Регистрация: 07.02.2016
Сообщений: 140

Инициализация вектора с несколькими типами данных

03.02.2017, 23:06. Показов 6219. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо создать список книг,содержащий название,автор,год выпуска, т.е. string,string,int . Решил взять вектор и хотел поэлементно создать базу книг. Но push_back ругается.

C++
1
vector<vector<string,string>,int >mBook;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2017, 23:06
Ответы с готовыми решениями:

Инициализация вектора с несколькими типами данных или объектами класса
Задача наподобие книжной библиотеки. Есть класс Book в котором перечислены автор,название,год издания. Хочу создать отдельный класс...

Std::list для списков с несколькими типами данных
обычно все примеры использования std:list строятся на одном типе переменых типа list&lt;int&gt; myList; list&lt;char*&gt; myist; ...

Инициализация объектов разными типами
Дана такая main: int main() { C c1(6), c2 = 5, c3(c1 + c1); return 0; } Нужно определить класс С так, чтобы ошибочным было...

24
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
03.02.2017, 23:12
Цитата Сообщение от nfnicolas Посмотреть сообщение
Но push_back ругается.
Правильно и делает. Разные типы недопустимы. Но вы можете использовать std::tuple как тип элемента вектора

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <vector>
#include <tuple>
 
int main()
{
    std::vector<std::tuple<std::string, std::string, int>> books;
    std::tuple<std::string, std::string, int> book1("Book name", "Book author", 2000);
    
    books.push_back(book1);
}
1
3 / 3 / 0
Регистрация: 07.02.2016
Сообщений: 140
03.02.2017, 23:43  [ТС]
))))спасибо,я как раз и думал о нем,но не знал как применить
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
03.02.2017, 23:50
Цитата Сообщение от sys_beginner Посмотреть сообщение
Но вы можете использовать std::tuple как тип элемента вектора
Вы считаете, что кортеж здесь удобнее обычной структуры, как элемента вектора?
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.02.2017, 02:16
Цитата Сообщение от avgoor Посмотреть сообщение
Вы считаете, что кортеж здесь удобнее обычной структуры, как элемента вектора?
Здесь намного удобнее взять три вектора:
C++
1
2
3
std::vector<std::string> t;
std::vector<std::string> a;
std::vector<int> y;
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
04.02.2017, 03:33
Цитата Сообщение от Croessmah Посмотреть сообщение
Здесь намного удобнее взять три вектора
Самое удобное, я полагаю - это сортировка этих трех векторов одновременно, скажем по году?
2
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.02.2017, 03:39
Цитата Сообщение от avgoor Посмотреть сообщение
скажем по году?
Конечно.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.02.2017, 03:51
Цитата Сообщение от avgoor Посмотреть сообщение
Самое удобное, я полагаю - это сортировка этих трех векторов одновременно, скажем по году?
Сортировка бывает только в хеллоувердах. В серьезных задачах индексация. А ее по нескольким полям таки проще реализовывать при раздельных массивах, во всяком случае при отсутствии свойств и полного рефлекшина которые комитет напрочь в стандарт вносить отказывается. А динамическое добавление/удаление полей оно вообще на основе структуры массивов реализуемо просто и дешево а на основе массива структур и куча плясок с бубном и дорого.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
04.02.2017, 03:56
Пример выше наглядно показывает преимущества использования SoA (Struct of Arrays) вместо AoS (Array of Structs), но этот пример из разряда Hello World, т.е. далек от реальной жизни.
https://habrahabr.ru/post/321106/

(накаркали, телепаты - подумал Штирлиц...)
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.02.2017, 04:07
Цитата Сообщение от _Ivana Посмотреть сообщение
https://habrahabr.ru/post/321106/
(накаркали, телепаты - подумал Штирлиц...)
Не надо путать бульдогов с носорогами. Это СУБД-ная задача а не графическая. Да и если взять графику то как в иксе так и в GL наверное совсем от балды приделали возможность подачи на вход конвейера не массива структур а структуры массивов. При этом индексирование и там и там пользовалось отрадясь вместо сортировки, и является рекомендованным способом подачи геометрии в конвейер.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
04.02.2017, 04:10
Fulcrum_013, да я не против, тем более решения подавать на вход графлиб структуры массивов Просто читал новинки на хабре, потом эту тему и подумал, что озадачивание сабжевым вопросом по всей стране началось
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.02.2017, 04:20
Цитата Сообщение от _Ivana Посмотреть сообщение
Просто читал новинки на хабре
Это глюпости а не новинки. Потому как начиная с 11-го икса есть средства считать все это на гораздо более приспособленной к этим делам GPU, которая кстати может в процессе подачи данных в шейдер переводить их в структуры из структуры массивов на входе. Но как бы особенность графики в том что структура данных так же как и их взаимосвязи и параметры необходимых сортировок всегда на момент компиляции определены. Отличие же в этом плане СУБД в том что и структура данных и взаимосвязи и параметры сортировок всегда user-input.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
04.02.2017, 04:32
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Это глюпости а не новинки.
Там автор без особых претензий просто демонстрирует подход ДОД на примере частной задачи и графика, а тем более ГПУ ни при чем - просто в его коте обращение к данымм таково, что один из вариантов более кеншфрендли.

ЗЫ и вообще, чем в ветке для тапочков самоутверждаться, лучше бы продолжили сериал с асмквестом на тему тру ООП и динамики вс статики - я прямо расстроился, что он закончился Хотя вашего оппонента я давно заигнорил и не видел его постов, ваши ответы давали полную картину происходящего сюжета
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
04.02.2017, 04:46
Цитата Сообщение от _Ivana Посмотреть сообщение
один из вариантов более кеншфрендли
Причем, ИМХО, это исключение. Чаще наоборот чем локальнее данные - тем лучше.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
При этом индексирование и там и там пользовалось отрадясь вместо сортировки
А если данные в память не влазят? Будем по индексу диск дергать, или все-таки отсортируем и будем обмениваться с диском кусками?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.02.2017, 04:57
Цитата Сообщение от _Ivana Посмотреть сообщение
что один из вариантов более кеншфрендли
В этих делах он не кеш а AVX-френдли быть должен а разброс компонент 2D вектора по разным массивам и таковым точно не является, так же как и пихание всех 2D векторов в одну структуру. наиболее AVX-френдли будет именно структура массивов 2D векторов.
Цитата Сообщение от _Ivana Посмотреть сообщение
ЗЫ и вообще, чем в ветке для тапочков самоутверждаться
Да тут дело не в самоутверждении. А в том что привыкнет сейчас к тому что массив структур сортировать и т.п. в чисто СУБД-ных задачах, в курсе СУБД как оно под капотом реализуется оптимально тоже за кадром останется, а въедет в такие дела только лет через 10.

Не по теме:

Цитата Сообщение от _Ivana Посмотреть сообщение
Хотя вашего оппонента я давно заигнорил и не видел его постов, ваши ответы давали полную картину происходящего сюжета
Запинал тролля. Каюсь.:-[

0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
04.02.2017, 05:11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В этих делах он не кеш а AVX-френдли быть должен
вот у кого с ГПУ дела, тот и про с АВХ будет френдить, а у кого ЦРПУ - тот с кэшем У всех свои дела и кесарю кесарево.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
в курсе СУБД как оно под капотом реализуется оптимально тоже за кадром останется, а въедет в такие дела только лет через 10.
хотите помешать ТС сделать собственные открытия?

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Запинал тролля. Каюсь.
И какого тролля! Кроме шуток, восхищаюсь вами :) Это же знаменитый annonimous с ЛОРа, вызывавший там стон и скрежет зубовный! :yes: А последнее время полез сюда и на dxdy.

0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.02.2017, 05:20
Цитата Сообщение от avgoor Посмотреть сообщение
Причем, ИМХО, это исключение. Чаще наоборот чем локальнее данные - тем лучше.
Пока локальность данных не мешает алгоритмической оптимизации. Потому как локальность с учетом наличия в проце вангователя доступа к данным способна дать прирост раза в 3 максимум, а не в 50 как это было без вангования. А алгоритмическая оптимизация в десятки тысяч раз. Особенно в задачах коллизий сложных тел и т.п. где полиморфизм и/или древовидные структуры данных дают ответ стоит ли искать в глубь дерева гораздо быстрее чем сравнение всех элементов каждый с каждым.
Цитата Сообщение от avgoor Посмотреть сообщение
А если данные в память не влазят? Будем по индексу диска дергать , или все-таки отсортируем и будем обмениваться с диском кусками?
Вот именно для таких случаев индексация и придумана. Для того чтобы сэкономить время (копироваие данных) на пересортировку по разным параметрам. По сему будем диск по индексу дергать с кешированием. Как все СУБД и работают.

Добавлено через 2 минуты
Цитата Сообщение от _Ivana Посмотреть сообщение
, а у кого ЦРПУ - тот с кэшем
АВХ это штука которая в ЦПУ живет а не в ГПУ. Опять же интеловская ЦПУ это такая ЦПУ в которой еще и ГПУ внутри прописался.

Добавлено через 40 секунд
Цитата Сообщение от _Ivana Посмотреть сообщение
хотите помешать ТС сделать собственные открытия?
Скорее намекнуть в какую сторону открытия копать
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
04.02.2017, 05:36
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А алгоритмическая оптимизация в десятки тысяч раз
Я про нее и говорю. В частности, что данные надо скармливать алгоритму в удобном ему виде. У меня, например, есть место в коде, где данные с выхода алгоритма на ЦПУ (который плохо параллелится и, кстати, там индексы) переупорядочиваются и отправляются на ГПУ. Разумеется, переупорядочивание спрятано по времени за пересылку по шине. Как это сделать иначе, если все данные в видеопамять не влезут?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.02.2017, 05:37
Цитата Сообщение от avgoor Посмотреть сообщение
Будем по индексу диск дергать, или все-таки отсортируем и будем обмениваться с диском кусками?
Кстати с тех пор как фалы стали жить на дисках (а особенно твердотельных дисках) это хранилища с произвольны доступом а не с последовательным как файлы живущие на ленте, для лентопротяжек дерганье по индексу действительно была штука накладная.
0
04.02.2017, 05:43

Не по теме:

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Запинал тролля. Каюсь.
Кстати, можно ссылку на тред? Интересно ж.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2017, 05:43
Помогаю со студенческими работами здесь

Инициализация вектора
Почему вектор не хочет инициализироваться при обьявлении? vector&lt;int&gt; vec = {1,2,3}; Имеем Error (active) E0289 no instance...

Инициализация вектора
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { std::vector&lt; int &gt; n (4,100); std::vector&lt; int...

Инициализация вектора
Как правильно инициализировать двумерный символьный вектор? Пробовал вот так, не получилось vector&lt; vector&lt;char&gt; &gt; map(2,...

Инициализация вектора
Как создать и сразу инициализировать вектор числами 5 3 1 3 5 2 5?

Инициализация вектора
у меня в классе есть vector из string (константный, просто строки нужны как образец для других функций), в конструкторе соответственно надо...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 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