Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2010, 16:11   #1
Mushu
 
Регистрация: 26.06.2009
Сообщений: 7
По умолчанию Представление матриц.

Нужно хранить в памяти разреженную несимметричную прямоугольную матрицу.
Есть 2 варианта:
1. map<map>
2. map<pair>

Второй вариант вроде предпочтительнее, т.к. он компактнее.
Но - вопрос: насколько сильно усложнит такое хранение алгоритм умножения двух матриц, одна из которых транспонированная?..

Если кто может помочь советом, или уже сталкивался с такой проблемой, буду очень благодарна!
Если вы лжете компилятору, он будет мстить!
Генри Спенсер.
Mushu вне форума Ответить с цитированием
Старый 04.06.2010, 17:06   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

map и pair хранят только 2 значения
NiCola999 вне форума Ответить с цитированием
Старый 04.06.2010, 17:16   #3
Mushu
 
Регистрация: 26.06.2009
Сообщений: 7
По умолчанию

Эээм... ну да.
Поэтому и рассматриваются эти 2 способа.
Чтобы хранить номер строки, номер столбца и, собственно, сам элемент матрицы.
Если честно, не совсем поняла, что хотели этим сказать..
Если вы лжете компилятору, он будет мстить!
Генри Спенсер.
Mushu вне форума Ответить с цитированием
Старый 04.06.2010, 19:38   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

разумнее использовать двумерный массив или векторный массив

двумерный массив:
Код:
int a[2][3] = {{1,2,3},
                   {3,4,5}};
векторный массив:
Код:
vector< vector<int> > matrix;
vector<int> tmp;
for(int i=0; i<10; i++){
    matrix.push_back(tmp);
     for(int j=0; j<5; j++){
            matrix[i].push_back(i);
     }
}
на счет последнего я не уверен, не проверял =))

Последний раз редактировалось NiCola999; 04.06.2010 в 19:45.
NiCola999 вне форума Ответить с цитированием
Старый 04.06.2010, 19:38   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

глюки соединения )
NiCola999 вне форума Ответить с цитированием
Старый 04.06.2010, 19:57   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну скорее что-то вроде этого:
Код:
vector<vector<int>> matrix;
for (int i = 0; i < 10; i++)
 {
 vector<int> temp;
 for (int j = 0; j < 5; j++)
  temp.push_back(i * j);
 matrix.push_back(temp);
 }
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 07.06.2010, 12:42   #7
Mushu
 
Регистрация: 26.06.2009
Сообщений: 7
По умолчанию

Насколько я знаю, если использовать vector<vector<>>, то усложняется произвольное обращение к элементу. Поэтому map и представляется более удобным... Либо, собственно, пара.
Или я ошибаюсь?
Если вы лжете компилятору, он будет мстить!
Генри Спенсер.
Mushu вне форума Ответить с цитированием
Старый 07.06.2010, 12:44   #8
Mushu
 
Регистрация: 26.06.2009
Сообщений: 7
По умолчанию

Двумерный массив не особо подходит потому, что в случае, если матрица разреженна, усложняется обращение к элементу. Точнее, нужно хранить еще дополнительно 2 массива, а это не есть гуд. У вектороного та же проблема.
Если вы лжете компилятору, он будет мстить!
Генри Спенсер.
Mushu вне форума Ответить с цитированием
Старый 07.06.2010, 12:44   #9
Mushu
 
Регистрация: 26.06.2009
Сообщений: 7
По умолчанию

К тому же, если размеры матрицы более чем 1 000 000х1 000 000...
Если вы лжете компилятору, он будет мстить!
Генри Спенсер.
Mushu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
Представление графов в виде матриц. vovanrbn Помощь студентам 0 01.06.2010 10:26
представление группировки Domanoff БД в Delphi 13 07.04.2010 18:09
Представление минимального числа (Си) spirit_trapper Помощь студентам 6 22.12.2009 15:57