Форум программистов, компьютерный форум CyberForum.ru

Структуры данных для хранения и работы с матрицами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Изменение формы http://www.cyberforum.ru/cpp-beginners/thread936034.html
Подскажите пожалуйста как создаются такие формы?
C++ многопоточность приложения есть код #include <windows.h> #include <locale.h> #include <stdio.h> #include <stdlib.h> int main() { http://www.cyberforum.ru/cpp-beginners/thread936020.html
C++ Начать работу с Active Directory
Доброго времени суток, уважаемые программисты! Хочу попробовать попогремировать на тему AD, с++, CodeBlocks - vs недоступна. Подскажите, пожалуйста, что необходимо инклудить? #include <windows.h>, #include <activeds.h>.. С последним проблемы, хотя в системных папках соответствующая длл есть. И в папку проекта бросал ее, не помогает. Что и немаловажно как! надо подключить, чтобы начать...
Как передать функции через метод класса C++
Добрый вечер всем! Столкнулся с проблемкой К примеру у меня есть 3 функции.Я хочу в 4 функцию дать массив названий этих 3 функций,чтобы распределять в каких моментах их использовать.Ну вот как-то так объяснил) К примеру у меня есть класс Меню в консоли.Я методом задаю список меню самого.Отдельно пишу функции,которые будут выполняться по нужному списку меню,и в еще одном методом,передаю...
C++ что за тема такая to-do list? http://www.cyberforum.ru/cpp-beginners/thread935955.html
объясните плиз что это такое(ну смысл типо список дел?), точнее как этим грамотно пользоваться?
C++ Упражнение из книги Страуструпа для начинающих. Точность вычислений Добрый вечер. В конце одной из глав идёт след. упражнение: Модифицируйте класс Fct так, чтобы в нём был дополнительный аргумент, позволяющий контролировать точность. Сделайте тип этого аргумента шаблонным параметром, чтобы повысить гибкость класса. Как понять "контролировать точность"? Подскажите, пожалуйста, что же имелось ввиду. Вот имеющийся код (класс Function): ... подробнее

Показать сообщение отдельно
miramentis
3 / 0 / 0
Регистрация: 04.08.2013
Сообщений: 25
10.08.2013, 14:12  [ТС]     Структуры данных для хранения и работы с матрицами
Цитата Сообщение от Praktolock Посмотреть сообщение
C++
1
2
3
4
5
6
7
void udalit_stolbec(vector<vector<double>>*matrix, int stolb)
{
 for(int i=0;i<matrix->size();i++)
 {
  matrix[i].erase(matrix[i].begin()+stolb);
 }
};
Быстро получилось
При квадратной матрице(для простоты примера):
в худшем случае такое удаление будет иметь сложность O(n^2)

дело в том, что matrix[i].begin() - очевидно, итератор и если stolb = n,то итератору придется пробежаться по всем столбцам.

Логично было бы сперва пробежаться по столбцам и удалять уже:
C++
1
2
std::vector<int>::iterator it = matrix.begin();
for (int i=0; i<stolb; i++) it++;
а дальше чуть подправленный ваш код:
C++
1
2
3
for(int i=0;i<matrix.size();i++){
  matrix[i].erase(it);
}
Тогда сложность удаления будет всего O(2n)
Но, все, же это гораздо раз больше, чем O(1)

Добавлено через 4 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
Ясно

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

количество столбцов в матрице в большинстве случаев уменьшается в два или чуть больше раза.

Добавлено через 1 минуту
Еще такой момент: держать в векторах нужно именно строки. так как при последующем преобразовании матрицы можно переставлять только строки. столбцы - нельзя.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru