kuvshinovdr / OGxx

Object-oriented graph algorithm library in C++ developed for educational purposes.
MIT License
1 stars 1 forks source link

Dense_bit_matrix #3

Closed kuvshinovdr closed 11 months ago

kuvshinovdr commented 1 year ago

Создать файл source/dense_bit_matrix.cpp. В нём разместить класс ogxx::Dense_bit_matrix : public ogxx::Bit_matrix. В качестве хранилища бит использовать vector<unsigned>. Не vector<bool> потому, что vector<bool> не позволяет эффективно работать с диапазонами бит.

Реализовать методы:

Перед началом работы не забудьте обновить свою ветку по main (через rebase).

kuvshinovdr commented 1 year ago

Класс Dense_bit_matrix требуется для реализации другой задачи, желательно поскорее его получить.

kuvshinovdr commented 1 year ago

В последней версии интерфейса есть методы, возвращающие Basic_iterator\<bool>. Их пока не надо реализовывать. Из новых методов можно сделать только copy, остальное реализовать заглушками. Вообще, можно сделать какую-то часть и уже её закоммитить и отправить.

RomanTimashev commented 1 year ago

такой вопрос а во всех ли функциях могу использовать override не очень понимаю

RomanTimashev commented 1 year ago

Вопрос а помимо самого файла что еще нужно загрузить тесты?

kuvshinovdr commented 1 year ago
  1. Override пишем в тех функциях, которые определяют методы интерфейса (в базовом классе это virtual функции).
  2. Тесты пока не требуются.
RomanTimashev commented 1 year ago

можно ли пользоваться assert при проверке например не вылезли мы за пределы вектора в функции get

kuvshinovdr commented 1 year ago

Проверять надо, но через if. В бит-матрице мы решили, что get возвращает false за пределами матрицы.

RomanTimashev commented 1 year ago

здравствуйте доделал последнюю функцию написал несколько заглушек хотел спросить подойдут ли они

kuvshinovdr commented 1 year ago
  1. Обновил вашу ветку по ветке main и изменил кое-что в коде соответственно (вынес вычисление линейного индекса в отдельную функцию Matrix_index::linear_index).
  2. Добавьте документирующий комментарий в начале файла.
  3. Переименуйте bit_contain в _bit_contain или мб укоротить даже, типа bits (тоже ведь private-член, поэтому ).
  4. Заглушки должны бросать исключение типа такого:
    throw std::logical_error("Dense_bit_matrix::iterate_row not implemented");
  5. Уточните состав методов, унаследованных из Bit_matrix. Там есть ещё методы.
kuvshinovdr commented 11 months ago

Код добавлен в main.