Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 29.07.2019
Сообщений: 10
1

Двумерный вектор

14.01.2020, 23:38. Показов 8729. Ответов 6

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток, кто может, помогите разобраться с записью в двумерный вектор
Суть в том, что надо записать в двумерный вектор скажем значения типа int, но при этом мы не знаем какого размера будет вектор (количество столбцов, строк). В инете много примеров, но везде уже за ранние выставлены кол. столбцов и строк.
Помогите пожалуйста разобраться.
C++
1
vector<vector<int>>communication();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2020, 23:38
Ответы с готовыми решениями:

Сделайте, чтобы двумерный вектор обогнал двумерный массив при заполнении случайными числами
Всем привет! Попробовал сравнить время заполнения векторов в векторе и массивов в массиве...

Двумерный вектор
Хочу создать в классе Model вектор двумерный указателей на объекты класса Cell. Как можно создать...

Двумерный вектор в классе
Qt, необходимо создать класс в который поместить двумерный вектор типа double, размеры массива...

Запись в двумерный вектор
Есть файл input.txt со следующим содержимым: 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0...

6
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
15.01.2020, 00:02 2
MaxMart,сначала нужно понять как добавлять элементы в одномерный вектор. Потом осознать, что вектор может быть элементом вектора векторов.
То есть, как научитесь 3-х мерный создавать, 2-х мерный станет простым и доступным.
1
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
15.01.2020, 00:17 3
Лучший ответ Сообщение было отмечено MaxMart как решение

Решение

Цитата Сообщение от IGPIGP Посмотреть сообщение
То есть, как научитесь 3-х мерный создавать, 2-х мерный станет простым и доступным.
Я ещё понимаю аналогию "научитесь создавать 2-х мерный и поймёте как создать 3-х мерный", но вначале создавать 3-х мерный, а потом понимать 2-х мерный?)

MaxMart, допустим у нас есть vector<vector<int>> vec
Он состоит из вектора векторов
vec[i] - обращение к элементу vector<int>, а vec[i][j] в свою очередь обращение к int

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
 
 
#define максимальное_значение_i 10
#define максимальное_значение_j 10
using std::vector;
 
int main()
{
    vector<vector<int>> vec;
    for (size_t i = 0; i < максимальное_значение_i; i++)
    {
        vec.push_back(vector<int>()); //добавляем в пустой вектор векторов
        for (size_t j = 0; j < максимальное_значение_j; j++)
        {
            vec[i].push_back(1); // а теперь обращаемся к вектору целых и добавляем 1
        }
    }
    std::cout << vec[0][0]; // на выходе получаем 1
}
1
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
15.01.2020, 00:19 4
Цитата Сообщение от AndryS1 Посмотреть сообщение
Я ещё понимаю аналогию "научитесь создавать 2-х мерный и поймёте как создать 3-х мерный", но вначале создавать 3-х мерный, а потом понимать 2-х мерный?)
А кто сказал, что юмор это легко? Некоторые и с 3-го раза не понимают, не отчаивайтесь)
0
AndryS1
15.01.2020, 00:22
  #5

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
А кто сказал, что юмор это легко? Некоторые и с 3-го раза не понимают, не отчаивайтесь)
Ну слава богу я не один такой
Я написал "А что в квартире не может быть 18 446 744 073 709 551 616‬ комнат" и мне ответили
"Вообще-то нет"((

0
0 / 0 / 0
Регистрация: 29.07.2019
Сообщений: 10
15.01.2020, 00:26  [ТС] 6
Я просто привык к массивам, что записываем в виде mas[i][j]. С вектором такое не прокатит, это совсем другое.
То есть нам нужно в двумерный вектор добавить(push_back) еще вектор, затем уже его заполнить с помощью все той же push_back?
0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
15.01.2020, 00:40 7

Не по теме:

Цитата Сообщение от AndryS1 Посмотреть сообщение
Я написал "А что в квартире не может быть 18 446 744 073 709 551 616‬ комнат" и мне ответили
"Вообще-то нет"((
В принципе не было бы возражений, но последние три цифры 616 запрещены стандартом напрочь. То есть, не вообще-то, а вообще -нет. Никак. 18 446 744 073 709 551 616‬ это строительное UB 8-)



Цитата Сообщение от MaxMart Посмотреть сообщение
Я просто привык к массивам, что записываем в виде mas[i][j]. С вектором такое не прокатит, это совсем другое.
Не совсем. В плюсах 2-D массивы это массивы массивов. Тут есть общность. А разница такая же как между просто вектором и просто массивом. У массива размер - константа времени компиляции. То есть и у 2-х мерного сразу и мёртво задаются. А у вектора всё может изменяться. Динамическая по своей природе конструкция. Размеры могут отличаться в разных строках. Поэтому итерацию ведут не по заранее известному размеру, а пока не закончатся элементы в данной строке.
Цитата Сообщение от MaxMart Посмотреть сообщение
То есть нам нужно в двумерный вектор добавить(push_back) еще вектор, затем уже его заполнить с помощью все той же push_back?
Можно и так. А можно и списком инициализировать. Если тип элемента позволяет.
1
15.01.2020, 00:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2020, 00:40
Помогаю со студенческими работами здесь

Двумерный вектор, ошибка
Здраствуйте! Почему я так не могу определить размер двумерного вектора? Подчеркивает красным 2...

Как задать двумерный вектор?
Как задать двумерный вектор, вводить в него элементы и обращаться к ним?

Двумерный массив через вектор
Задача состоит в том, что надо создать массив строк через вектор, т.е. я хочу иметь возмость...

Двумерный вектор. Не работает reserve()
Пишу динамическую таблицу, элементы и размеры которой задаются из .txt. Использую двумерный...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru