28 inline iterator(T* parPtr,
size_t pos){
57 inline iterator operator+(
int offset) {
61 inline bool operator==(
iterator it) {
62 return ptr == it.getPtr();
65 return ptr < it.getPtr();
67 inline bool operator<=(
iterator it) {
68 return ptr <= it.getPtr();
71 return ptr > it.getPtr();
73 inline bool operator>=(
iterator it) {
74 return ptr >= it.getPtr();
76 inline bool operator!=(
iterator it) {
77 return ptr != it.getPtr();
79 inline T &operator*() {
88 inline size_t operator-(
iterator it) {
89 return (ptr - it.getPtr());
95 inline Vector(
int len = 20) {
96 resize_internal(len,
false);
100 inline Vector(
int size, T value) {
102 for (
int j=0;j< size;j++){
109 resize_internal(copyFrom.size(),
false);
110 for (
int j=0;j<copyFrom.size();j++){
111 data[j] = copyFrom[j];
113 this->len = copyFrom.size();
117 inline Vector(T *from, T *to) {
118 this->len = to - from;
119 resize_internal(this->len,
false);
120 for (
size_t j=0;j<this->len;j++){
128 delete [] this->data;
131 inline void clear() {
139 inline bool empty() {
143 inline void push_back(T value){
144 resize_internal(len+1,
true);
149 inline void pop_back(){
155 inline void assign(iterator v1, iterator v2) {
156 size_t newLen = v2 - v1;
157 resize_internal(newLen,
false);
160 for (
auto ptr = v1; ptr != v2; ptr++) {
165 inline void assign(
size_t number, T value) {
166 resize_internal(number,
false);
168 for (
int j=0;j<number;j++){
176 int bufferLenCpy = bufferLen;
181 bufferLen = in.bufferLen;
185 in.bufferLen = bufferLenCpy;
188 inline T &operator[](
int index) {
193 resize_internal(copyFrom.size(),
false);
194 for (
int j=0;j<copyFrom.size();j++){
195 data[j] = copyFrom[j];
197 this->len = copyFrom.size();
200 inline T &operator[] (
const int index)
const {
204 inline bool resize(
int newSize, T value){
205 if (resize(newSize)){
206 for (
int j=0;j<newSize;j++){
214 inline void shrink_to_fit() {
215 resize_internal(this->len,
true,
true);
219 return this->bufferLen;
222 inline bool resize(
int newSize){
223 int oldSize = this->len;
224 resize_internal(newSize,
true);
226 return this->len!=oldSize;
229 inline iterator begin(){
230 return iterator(data, 0);
234 return *iterator(data+(len-1), len-1);
237 inline iterator end(){
238 return iterator(data+len, len);
242 inline void erase(iterator it) {
245 int lenToEnd = len - pos - 1;
249 memmove((
void*) &data[pos],(
void*)(&data[pos+1]),lenToEnd*
sizeof(T));
261 inline void resize_internal(
int newSize,
bool copy,
bool shrink=
false) {
262 bool withNewSize =
false;
263 if (newSize>bufferLen || this->data==
nullptr ||shrink){
266 int oldBufferLen = this->bufferLen;
267 this->data =
new T[newSize+1];
268 this->bufferLen = newSize;
269 if (oldData !=
nullptr) {
270 if(copy && this->len > 0){
271 memcpy((
void*)data,(
void*) oldData, this->len*
sizeof(T));
274 cleanup(oldData, newSize, oldBufferLen);
281 void cleanup(T*data,
int from,
int to){
282 for (
int j=from;j<to;j++){
Iterator for the Vector class.
Definition: Vector.h:21
Vector implementation which provides the most important methods as defined by std::vector....
Definition: Vector.h:13