Skip to content

Lab4. Nazdruhin Matvey - #1906

Closed
bikakuka wants to merge 10 commits into
Dovgalyuk:masterfrom
bikakuka:lab4
Closed

bikakuka wants to merge 10 commits into
Dovgalyuk:masterfrom
bikakuka:lab4

Conversation

@bikakuka

Copy link
Copy Markdown
Contributor

No description provided.

Adapt the Lab3 C vector to store typed values.
Use new[]/delete[] and element assignment instead of realloc.
Add independent copying, assignment and swap.
Comment thread LibraryCPPTemplate/vector.h Outdated
if (this == &a) return *this;
std::unique_ptr<Data[]> new_data(new Data[a.count]());
for (size_t i = 0; i < a.count; i++)
new_data[i] = a.data[i];

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Копирование реализовано дважды.

Comment thread LibraryCPPTemplate/vector.h Outdated
if (size == count) return;
if (size > count) {
if (size <= capacity) {
for (size_t i = count; i < size; i++) data[i] = Data();

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Емкость же выделена со значениями по умолчанию.

Comment thread LibraryCPPTemplate/graph.h Outdated
}
private:
struct Edge {
bool exists = false;

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не логичнее хранить указатель на метку, чтобы не выделять лишнюю память?

Comment thread Lab4CPP/lab4.cpp Outdated
using namespace std;

bool find_path(
const Graph<string, long long> &residual,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Стоит сделать typedef.

@bikakuka
bikakuka requested a review from Dovgalyuk October 22, 2026 20:18
Comment thread Lab4CPP/lab4.cpp Outdated
const FlowGraph &residual,
size_t current,
size_t sink,
Vector<bool> &visited,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь тоже не хватает typedef.

Comment thread LibraryCPPTemplate/graph.h Outdated
edges.set(from * size() + to, Edge());
}

Vector<VertexLabel> get_vertices() const{

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тоже типы повторяются.

@bikakuka
bikakuka requested a review from Dovgalyuk October 23, 2026 07:05
Comment thread Lab4CPP/lab4.cpp Outdated

parent.set(next, current);

if (find_path(residual, next, sink, visited, parent))

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Поиск в глубину не лучший вариант, в больших графах может быть переполнение стека. Нужен либо собственный стек, либо поиск в ширину.

realize bfs with queue  based on vector because every vertex can be in queue maximum once, so fixed sized vector will be enough
@bikakuka

Copy link
Copy Markdown
Contributor Author

а еще удалил папку lab1C так как мешалась :)

@bikakuka
bikakuka requested a review from Dovgalyuk October 28, 2026 11:22
Comment thread Lab4CPP/lab4.cpp Outdated
typedef Graph<string, long long> FlowGraph;
typedef Vector<bool> Visited;
typedef Vector<size_t> Parents;
typedef Vector<size_t> VertexQueue;

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очередь же уже была реализована.

Надоело притворяться англичанином, нагуглил как подключить С библиотеку к CPP оказывается уже всё было, просто не было раньше необходимости

Вектор был переписан чтобы хранить не только Data (который инт/указатель), а и строки и числа, в целом наверное можно было бы его тоже использовать из предыдущей, но тогда бы пришлось изгаляться с указателями на объекты.
воооот
@bikakuka
bikakuka requested a review from Dovgalyuk October 29, 2026 23:23
@Dovgalyuk

Copy link
Copy Markdown
Owner

Принято.

  • Разработать интерфейс (набор функций) для ассоциативного массива, который хранит пары (ключ)строка -> (значение)строка. Поддерживаемые операции: добавить пару ключ-значение, найти значение по ключу, удалить значение по ключу. Разработать итератор для обхода всех значений (если возможно, в порядке возрастания или убывания ключа).
  • Реализовать контейнер на основе BWA (https://habr.com/ru/articles/984184/), реализующий разработанный интерфейс.
  • Создать тест для проверки работы контейнера. Программа должна включать в себя нагрузочное тестирование для исключения ошибок, приводящих к сложности работы O(N*N) при поиске, удалении или добавлении значений.
  • Написать генератор входных данных различного объема для этого контейнера.
  • Добавить тест со входными данными большого объёма (порядка 1000000 элементов).
  • Сравнить скорость выполнения операции добавления в контейнер содержимого файла со стандартными контейнерами std::map и std::unordered_map при различных объемах данных. Построить графики зависимости времени работы от объёма входных данных и оценить характер зависимости.
  • Добавить тест в CMakeLists.txt, который запускает разработанную программу.

@Dovgalyuk Dovgalyuk closed this Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants