Opened 3 years ago
Closed 3 years ago
#284 closed ожидается проверка (задача сдана)
HW #6
Reported by: | Daniil Lyubaev | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW_vector | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (8)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:3 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:4 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Теперь вижу.
Во-первых, у тебя неправильно реализована логика увеличения размера вектора. При исчерпании свободного места его capacity
должно увеличиваться в два раза, а у тебя оно увеличивается на единицу. Это трагически влияет на асимптотику операции вставки в конец.
Столько скобок в тернарном операторе избыточны, у тернарного оператора самый низкий приоритет, ниже него только операторы присваивания.
comment:5 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Вроде поправил, теперь если _sz + 1 = _cp
и вызывается insert()
или push_back()
, то _cp
в два раза увеличивается.
Так же поправил resize()
, чтоб он использовал reserve()
и было поменьше одинакового кода.
Поправил insert()
и push_back()
, чтоб они использовали resize()
, но теперь там пишется _sz - 1
, кажется чуть-чуть читаемость упала, как лучше? Еще думал о том, чтоб в push_back(int value)
просто вызывать insert(_sz, value)
, стоит ли?
Еще я немного не понял, надо ли при вызове resize()
, если new_size
больше чем 2 * _cp
, делать _cp
равным 2 * new_size
? В описании лабораторной написано, что надо делать просто new_size
, но при этом по логике вся зарезервированная память уже вроде как занята.
comment:6 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
В целом всё хорошо, пара замечаний:
- В конструкторе копирования и операторе присваивания не нужно копировать всё
capacity
элементов, достаточноsize
- Ты слишком рано расширяешь память. При
_sz == _cp
у тебя еще есть место под элемент, а ты уже реаллоцируешь память.
В остальном хорошо, push_back
заменять insert
'ом не надо, про new_size
у тебя всё правильно сделано.
comment:7 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:8 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Все ок, зачтено.
Не вижу твоего коммита в svn
Ты уверен, что закоммитил своё решение?