KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I recently wrote an implementation of STL Vector as a programming exercise. The program compiles but I receive a strange error saying: terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc I've never come up with this error before and am not sure what exactly should be changed within my implementation to make it function correctly. Can someone take a look through my code and see if anything jumps out at them as wrong in this specific case? Sorry I can't be more specific, I'm not sure where to look myself, thanks in advance. #include <iostream> #include <string> #include <cassert> #include <algorithm> using namespace std; template <class T> class Vector { public: typedef T * iterator; Vector(); Vector(unsigned int size); Vector(unsigned int size, const T & initial); Vector(const Vector<T> & v); ~Vector(); unsigned int capacity() const; unsigned int size() const; bool empty() const; iterator begin(); iterator end(); T & front(); T & back(); void push_back(const T & value); void pop_back(); void reserve(unsigned int capacity); void resize(unsigned int size); T & operator[](unsigned int index); Vector<T> & operator=(const Vector<T> &); private: unsigned int my_size; unsigned int my_capacity; T * buffer; }; // Your code goes here ... template<class T> Vector<T>::Vector() { my_capacity = 0; my_size = 0; buffer = 0; } template<class T> Vector<T>::Vector(const Vector<T> & v) { my_size = v.my_size; my_capacity = v.my_capacity; buffer = new T[my_size]; for (int i = 0; i < my_size; i++) buffer[i] = v.buffer[i]; } template<class T> Vector<T>::Vector(unsigned int size) { my_capacity = size; my_size = size; buffer
Tags (comma-separated)
Save Edits
Cancel