Opened 4 years ago
Closed 4 years ago
#986 closed ожидается проверка (задача сдана)
WW_linq
Reported by: | tarasov.denis | Owned by: | Egor Suvorov |
---|---|---|---|
Component: | WW_linq | Version: | 3.0 |
Keywords: | Cc: |
Description
Кажется, что криво, но лучше не получилось
Change History (10)
comment:1 Changed 4 years ago by
Owner: | changed from Egor Suvorov to tarasov.denis |
---|
comment:2 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Type: | ожидается проверка → ожидаются исправления |
comment:3 Changed 4 years ago by
P.S. Ещё не хватает всяких запретов на копирование/присваивание enumerator
. И даже move можно запретить с C++17. И стоит сделать деструктор enumerator
виртуальным — это в этом задании на корректность не влияет, но класс-то полиморфный.
comment:4 Changed 4 years ago by
Resolution: | задача сдана |
---|---|
Status: | closed → reopened |
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
Я не очень понял что делать с запретами на копирование, присваивание и перемещение, без них не получается обойтись, как минимум from требует копирование.
comment:5 Changed 4 years ago by
Owner: | changed from tarasov.denis to Egor Suvorov |
---|---|
Status: | reopened → assigned |
comment:6 Changed 4 years ago by
Owner: | changed from Egor Suvorov to tarasov.denis |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Корректность почти есть (6.5/7): многовато noexcept
.
Стиль 2.5/3:
- Всё ещё не хватает слов
explicit
для конструкторов. noexcept
на методах, которые могут вызвать произвольные пользовательские функции (даже пользовательский конструктор перемещения) — это нехорошо.to_vector
можно сделать черезcopy_to
+back_inserter
edge_
--> что-нибудь другое. Это не ребро и не абстрактная "граница".
comment:7 Changed 4 years ago by
Owner: | changed from tarasov.denis to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:8 Changed 4 years ago by
Owner: | changed from Egor Suvorov to tarasov.denis |
---|---|
Type: | ожидается проверка → ожидаются исправления |
По стилю 2.95/3; стоит имена taken_
/limit_
/count
между собой как-то синхронизировать. Я бы, возможно, вообще избавился от двух переменных и сделал одну.
comment:9 Changed 4 years ago by
Owner: | changed from tarasov.denis to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Корректность 6/7: падает
until
на пустом входе.Стиль 1/3:
explicit
(конструктор, оператор),final
(для классов),noexcept
, rvalue-ref-qualification для методов.copy_to
лучше делать напрямую, а не через вектор. Не станет сильно больше кода к тому же. При желании можно вообщеto_vector
выразить черезcopy_to
+back_inserter
.operator bool()
— это практически самое неочевидное место, чтобы запихать туда сдвиг итератора вdrop_enumerator
. То есть если создали итератор, то надо первым делом вызыватьbool
, иначе ответ неправильный. Автотестами это, конечно, не проверить (интерфейс формально этот никуда не вылезает), но выглядит очень жутко. Плюсpos_
не нужен, хватитcount_
.until_eq_enumerator
на каждый чих происходит сравнение элемента.where_eq
/until_eq
можно выразить черезwhere
/until
.