Форум программистов, компьютерный форум 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>,...
Как передать функции через метод класса C++
Добрый вечер всем! Столкнулся с проблемкой К примеру у меня есть 3 функции.Я хочу в 4 функцию дать массив названий этих 3 функций,чтобы распределять в каких моментах их использовать.Ну вот как-то...
C++ что за тема такая to-do list? http://www.cyberforum.ru/cpp-beginners/thread935955.html
объясните плиз что это такое(ну смысл типо список дел?), точнее как этим грамотно пользоваться?
C++ Упражнение из книги Страуструпа для начинающих. Точность вычислений Добрый вечер. В конце одной из глав идёт след. упражнение: Модифицируйте класс Fct так, чтобы в нём был дополнительный аргумент, позволяющий контролировать точность. Сделайте тип этого аргумента... подробнее

Показать сообщение отдельно
miramentis
3 / 0 / 0
Регистрация: 04.08.2013
Сообщений: 25
10.08.2013, 19:55  [ТС]
Цитата Сообщение от Praktolock Посмотреть сообщение
Могу ошибаться, но лично мое мнение - если нужно максимальное быстродействие, то нужно все делать вручную, без использования стандартных контейнеров. И не получится сделать чтобы и работало шустро и память экономилась.
Вместо erase() у битсета можно использовать сдвиги в комбинации с операторами &. Не так уж сложно на самом деле реализовать это всё без векторов

Добавлено через 1 минуту
В принципе, есть же масса различных специализированных библиотек для работы с матрицами, еслми не охота ничего изобретать, просто погугли немого
спасибо за информацию про свиги.
что вы скажете про такой способ удалить элемент (а, точнее переместить его в хвост битсета)?
C++
1
2
3
4
    boost::dynamic_bitset<> mask(col,0ul);
    for(int i=0;i<del;i++)
        mask[i]=1;
    row=(mask.flip()&(row>>1))|(row&mask);
Добавлено через 40 минут
Цитата Сообщение от salam Посмотреть сообщение
во-первых, никогда не пишите константы в O-обозначениях. это безграмотно.
во-вторых, сложность будет квадратичной все равно. кто вам сказал, что удаление выполняется за 1?

Добавлено через 2 минуты
moving не позволит вам удалять константно. потому я и говорил о копировании.
спасибо за информацию. буду знать теперь.

Добавлено через 1 час 33 минуты
думаю, что удалять таким методом - очень и очень долго...
такой вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
std::vector< boost::dynamic_bitset<> > Matrix(row,boost::dynamic_bitset<>(col,0));
... (заполняем матрицу)
int col_new=col;
for(int i=0;i<col_new;i++)
    if(Base[i][1]!=1){
        boost::dynamic_bitset<> mask(col,0ul);
        for(int j=0;j<i;j++) mask[j]=1;
        for(int r=0;r<row;r++)
            Matrix[r]=(Matrix[r]&mask.flip())|(mask.flip()&(Matrix[r]>>1));
        i--; col_new--;
    }
при
row = 87
col = 2589

работает где-то 2 секунды
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru