Open GoogleCodeExporter opened 9 years ago
Не тот адрес указала :(
tatashina_anna/task01_vector/
А еще я никак не могу понять, как должен
выглядеть адекватный swap. Так, как я его
написала - он работать не хочет.
Original comment by anna.tat...@gmail.com
on 10 Mar 2013 at 9:08
Сначала ответь на такой вопрос:
Зачем вообще нужно реализовывать метод swap,
если есть встроенная функция swap?
Original comment by aivyu...@gmail.com
on 10 Mar 2013 at 9:19
Вопрос повис в воздухе :)
Original comment by aivyu...@gmail.com
on 6 Apr 2013 at 6:33
0. Warnings:
main.cpp: In member function ‘T& TVector<T>::operator[](int) [with T =
int]’:
main.cpp:79: warning: control reaches end of non-void function
1. Не вижу проверок на утечки памяти.
2. Size(), Capacity(), Front(), Back() невозможно вызывать у
константного вектора.
3. Невозможно проитерироваться по
константному вектору, т.к. у него
невозможно вызывать Begin(), End().
4. Resize() должен принимать требуемый размер
вектора.
Reserve() - требуемый размер внутреннего буфера.
Читайте внимательно документацию:
http://cplusplus.com/reference/vector/vector/resize/?kw=vector%3A%3Aresize
http://cplusplus.com/reference/vector/vector/reserve/?kw=vector%3A%3Areserve
Напоминаю, что необходимо реализовать
методы, указанные в задании. Их поведение
должно быть "как в STL".
5. Конструктор копирования не
переопределен. Поэтому простой код
вызывает утечки:
vector<int> a;
...
vector<int> b(a):
Объясните почему.
Решение не принято.
Original comment by aivyu...@gmail.com
on 6 Apr 2013 at 6:45
Фишка в том, что когда я не переопределила
конструктор копирования, он создает его
сам. Он просто копирует все поля.
Происходит неглубокое копирование. Т.е.
указатель копируется, а сам массив нет. Т.е.
предположим у b был свой указатель на
какой-то массив. А а этот массив
переопределил. В итоге все, на что указывал
b - утекло.
Original comment by anna.tat...@gmail.com
on 27 May 2013 at 12:32
Не собирается:
main.cpp: In copy constructor ‘TVector<T>::TVector(TVector<T>&)’:
main.cpp:25: error: ‘Buf’ was not declared in this scope
main.cpp: In member function ‘void TVector<T>::Resize()’:
main.cpp:54: error: ‘n’ was not declared in this scope
main.cpp: In member function ‘const T* TVector<T>::begin() const’:
main.cpp:77: error: ‘Buf’ was not declared in this scope
main.cpp: In member function ‘const T* TVector<T>::end() const’:
main.cpp:83: error: ‘Buf’ was not declared in this scope
Original comment by aivyu...@gmail.com
on 27 May 2013 at 7:37
Original comment by anna.tat...@gmail.com
on 27 May 2013 at 7:58
0. Warning:
main.cpp: In member function ‘T& TVector<T>::operator[](int) [with T =
int]’:
main.cpp:89: warning: control reaches end of non-void function
Кстати, это предупреждение указывает на
очень грубую ошибку, которая как правило
приводит к проезду по памяти. А вообще по
стандарту - UB.
1. Не вижу проверок на утечки памяти.
Original comment by aivyu...@gmail.com
on 27 May 2013 at 8:02
Original comment by anna.tat...@gmail.com
on 27 May 2013 at 10:36
Original issue reported on code.google.com by
anna.tat...@gmail.com
on 10 Mar 2013 at 8:37