30 inline iterator(T* parPtr,
size_t pos){
59 inline iterator operator+(
int offset) {
63 inline bool operator==(
iterator it) {
64 return ptr == it.getPtr();
67 return ptr < it.getPtr();
69 inline bool operator<=(
iterator it) {
70 return ptr <= it.getPtr();
73 return ptr > it.getPtr();
75 inline bool operator>=(
iterator it) {
76 return ptr >= it.getPtr();
78 inline bool operator!=(
iterator it) {
79 return ptr != it.getPtr();
81 inline T &operator*() {
90 inline size_t operator-(
iterator it) {
91 return (ptr - it.getPtr());
97 inline Vector(
int len = 20) {
98 resize_internal(len,
false);
102 inline Vector(
int size, T value) {
104 for (
int j=0;j< size;j++){
110 inline Vector( Vector<T> ©From) {
111 resize_internal(copyFrom.size(),
false);
112 for (
int j=0;j<copyFrom.size();j++){
113 data[j] = copyFrom[j];
115 this->len = copyFrom.size();
119 inline Vector(T *from, T *to) {
120 this->len = to - from;
121 resize_internal(this->len,
false);
122 for (
size_t j=0;j<this->len;j++){
130 delete [] this->data;
133 inline void clear() {
141 inline bool empty() {
145 inline void push_back(T value){
146 resize_internal(len+1,
true);
151 inline void pop_back(){
157 inline void assign(iterator v1, iterator v2) {
158 size_t newLen = v2 - v1;
159 resize_internal(newLen,
false);
162 for (
auto ptr = v1; ptr != v2; ptr++) {
167 inline void assign(
size_t number, T value) {
168 resize_internal(number,
false);
170 for (
int j=0;j<number;j++){
175 inline void swap(Vector<T> &in){
178 int bufferLenCpy = bufferLen;
183 bufferLen = in.bufferLen;
187 in.bufferLen = bufferLenCpy;
190 inline T &operator[](
int index) {
194 inline Vector<T> &operator=(Vector<T> ©From) {
195 resize_internal(copyFrom.size(),
false);
196 for (
int j=0;j<copyFrom.size();j++){
197 data[j] = copyFrom[j];
199 this->len = copyFrom.size();
202 inline T &operator[] (
const int index)
const {
206 inline bool resize(
int newSize, T value){
207 if (resize(newSize)){
208 for (
int j=0;j<newSize;j++){
216 inline void shrink_to_fit() {
217 resize_internal(this->len,
true,
true);
221 return this->bufferLen;
224 inline bool resize(
int newSize){
225 int oldSize = this->len;
226 resize_internal(newSize,
true);
228 return this->len!=oldSize;
231 inline iterator begin(){
232 return iterator(data, 0);
236 return *iterator(data+(len-1), len-1);
239 inline iterator end(){
240 return iterator(data+len, len);
244 inline void erase(iterator it) {
247 int lenToEnd = len - pos - 1;
251 memmove((
void*) &data[pos],(
void*)(&data[pos+1]),lenToEnd*
sizeof(T));
263 inline void resize_internal(
int newSize,
bool copy,
bool shrink=
false) {
264 bool withNewSize =
false;
265 if (newSize>bufferLen || this->data==
nullptr ||shrink){
268 int oldBufferLen = this->bufferLen;
269 this->data =
new T[newSize+1];
270 this->bufferLen = newSize;
271 if (oldData !=
nullptr) {
272 if(copy && this->len > 0){
273 memcpy((
void*)data,(
void*) oldData, this->len*
sizeof(T));
276 cleanup(oldData, newSize, oldBufferLen);
283 void cleanup(T*data,
int from,
int to){
284 for (
int j=from;j<to;j++){
Iterator for the Vector class.
Definition: Vector.h:23
Vector implementation which provides the most important methods as defined by std::vector....
Definition: Vector.h:15
Pico Arduino Framework.
Definition: Arduino.cpp:26