Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/89: Рейтинг темы: голосов - 89, средняя оценка - 4.81
1 / 1 / 0
Регистрация: 14.11.2018
Сообщений: 684

Как создать двумерную матрицу через vector?

27.11.2019, 13:29. Показов 19482. Ответов 23
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Понадобилась в середине проге создать двумерную матрицу. Чтобы не заботиться об очистке, решил использовать <vector>, но не знаю как создать двумерную
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2019, 13:29
Ответы с готовыми решениями:

Из заданного четного числа создать двумерную матрицу
как из заданного числа создать двумерную матрицу если оно четное

Как инициализировать двумерную матрицу натуральными логарифмами?
Всем привет, столкнулся с небольшой проблемой, мне нужно инициализировать матрицу в таком виде: A = { {ln2,...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

23
Just Do It!
 Аватар для XLAT
4220 / 2685 / 656
Регистрация: 23.09.2014
Сообщений: 9,241
Записей в блоге: 3
27.11.2019, 18:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Самая тяжёлая тут операция.
ок,
я ни чего не утверждаю, но интересно всё же затестить.

вот семпл на тест от меня

C++
1
2
3
4
5
6
7
8
9
    const int ROW = 1000;
    const int COL = 1000;
 
std::vector<std::vector<int>> arr(ROW, std::vector<int>(COL));
    for    (int i = 0; i < ROW; i++)
    {   for(int j = 0; j < ROW; j++)
        {     arr [i][j] = i + j;
        }
    }
давайте ваш вариант двумерного массива.
0
фрилансер
 Аватар для Алексей1153
6504 / 5749 / 1134
Регистрация: 11.10.2019
Сообщений: 15,394
27.11.2019, 19:40
XLAT, держи. Время не измерял, отбивал пальцем по столу, разницу заметно даже так

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
31
#include <vector>
 
int main()
{
    const int ROWS = 25000;
    const int COLS = 25000;
 
    {
        std::vector<std::vector<char>> arr_v_v(ROWS, std::vector<char>(COLS,0));
        for(int r = 0; r < ROWS; r++)
        {
            for(int c = 0; c < COLS; c++)
            {
                arr_v_v [r][c] = r + c;
            }
        }
    }
 
    {
        std::vector<char> arr_v(ROWS*COLS,0);
        for(int r = 0; r < ROWS; r++)
        {
            for(int c = 0; c < COLS; c++)
            {
                arr_v [r*COLS+c] = r + c;
            }
        }
    }
 
    return 0;
}
Добавлено через 2 минуты
но при замерах учитывай, что строки 9 и 20 тоже заметное время жрут
0
Just Do It!
 Аватар для XLAT
4220 / 2685 / 656
Регистрация: 23.09.2014
Сообщений: 9,241
Записей в блоге: 3
27.11.2019, 19:40
в общем кое-что я выяснил:
мой тест-стенд здесь:
https://ideone.com/gUm80P

1 замер тактов.
2 куча проходов.
3 выбирается наименьшее количество тактов для фрагмента кода.
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
28.11.2019, 12:22
Лучший ответ Сообщение было отмечено Гуру77777 как решение

Решение

Цитата Сообщение от XLAT Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int get(int** arr, size_t row, size_t col)
{
    return *(*(arr + row) + col);  ///<<<---Два обращения в РАЗНЫЕ участки памяти!
}
int get(int* arr, size_t row, size_t col) 
{
    return *(arr + row*col + col); ///<<<---Одно чтение из памяти!
}
Самое медленное - это обращение в память, за это время можно и десяток сложений/умножений сделать, если в кеш линию не попал.

Добавлено через 54 минуты
Fix:

C++
1
2
3
4
int get(int* arr, size_t row, size_t col, size_t n_cols) 
{
    return *(arr + row*n_cols + col); ///<<<---Одно чтение из памяти!
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2019, 12:22

Записать элементы одномерного массива в двумерную матрицу одним циклом
записать элементы из int massive записать все элементы в int array ) одним циклом

Как реализовать матрицу посредством двумерного вектора? (std::vector)
const int matrix_A_Columns = 12000; const int matrix_A_Rows = 25000; double matrix_A; как вот это написать с помощью вектора?

Как создать vector внутри класса?
#include &lt;vector&gt; using namespace std; // typedef std::vector&lt;int&gt; mantissa; class desyatichnaya_drob { public: int...

Как сделать двумерную матрицу с доступом не через int индексы, а через String?
В общем задача такая, нужно сделать двумерную матрицу, но доступ к ее элементам должен производится не через целочисленные индексы, а через...

Как создать двумерную матрицу из данных, хранящихся в файле
Есть задача на работу с матрицей, находящейся в файле. На простом примере с фиксированным размером массива я ее решил, но не могу...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru