27 inline iterator(T* parPtr,
size_t pos){
56 inline iterator operator+(
int offset) {
60 inline bool operator==(
iterator it) {
61 return ptr == it.getPtr();
64 return ptr < it.getPtr();
66 inline bool operator<=(
iterator it) {
67 return ptr <= it.getPtr();
70 return ptr > it.getPtr();
72 inline bool operator>=(
iterator it) {
73 return ptr >= it.getPtr();
75 inline bool operator!=(
iterator it) {
76 return ptr != it.getPtr();
78 inline T &operator*() {
87 inline size_t operator-(
iterator it) {
88 return (ptr - it.getPtr());
94 inline Vector(
int len = 20) {
95 resize_internal(len,
false);
99 inline Vector(
int size, T value) {
101 for (
int j=0;j< size;j++){
108 resize_internal(copyFrom.size(),
false);
109 for (
int j=0;j<copyFrom.size();j++){
110 data[j] = copyFrom[j];
112 this->len = copyFrom.size();
116 inline Vector(T *from, T *to) {
117 this->len = to - from;
118 resize_internal(this->len,
false);
119 for (
size_t j=0;j<this->len;j++){
127 delete [] this->data;
130 inline void clear() {
138 inline bool empty() {
142 inline void push_back(T value){
143 resize_internal(len+1,
true);
148 inline void pop_back(){
154 inline void assign(iterator v1, iterator v2) {
155 size_t newLen = v2 - v1;
156 resize_internal(newLen,
false);
159 for (
auto ptr = v1; ptr != v2; ptr++) {
164 inline void assign(
size_t number, T value) {
165 resize_internal(number,
false);
167 for (
int j=0;j<number;j++){
175 int bufferLenCpy = bufferLen;
180 bufferLen = in.bufferLen;
184 in.bufferLen = bufferLenCpy;
187 inline T &operator[](
int index) {
192 resize_internal(copyFrom.size(),
false);
193 for (
int j=0;j<copyFrom.size();j++){
194 data[j] = copyFrom[j];
196 this->len = copyFrom.size();
199 inline T &operator[] (
const int index)
const {
203 inline bool resize(
int newSize, T value){
204 if (resize(newSize)){
205 for (
int j=0;j<newSize;j++){
213 inline void shrink_to_fit() {
214 resize_internal(this->len,
true,
true);
218 return this->bufferLen;
221 inline bool resize(
int newSize){
222 int oldSize = this->len;
223 resize_internal(newSize,
true);
225 return this->len!=oldSize;
228 inline iterator begin(){
229 return iterator(data, 0);
233 return *iterator(data+(len-1), len-1);
236 inline iterator end(){
237 return iterator(data+len, len);
241 inline void erase(iterator it) {
244 int lenToEnd = len - pos - 1;
248 memmove((
void*) &data[pos],(
void*)(&data[pos+1]),lenToEnd*
sizeof(T));
260 inline void resize_internal(
int newSize,
bool copy,
bool shrink=
false) {
261 bool withNewSize =
false;
262 if (newSize>bufferLen || this->data==
nullptr ||shrink){
265 int oldBufferLen = this->bufferLen;
266 this->data =
new T[newSize+1];
267 this->bufferLen = newSize;
268 if (oldData !=
nullptr) {
269 if(copy && this->len > 0){
270 memcpy((
void*)data,(
void*) oldData, this->len*
sizeof(T));
273 cleanup(oldData, newSize, oldBufferLen);
280 void cleanup(T*data,
int from,
int to){
281 for (
int j=from;j<to;j++){
Iterator for the Vector class.
Definition: Vector.h:20
Vector implementation which provides the most important methods as defined by std::vector....
Definition: Vector.h:12