#pragma once #include #include namespace ylib { template class vector:public std::vector { public: vector(const std::vector& value):std::vector() { operator=(value); } vector() : std::vector() { } ~vector() { } void operator=(const std::vector& value) { *((std::vector*)this) = value; } bool find(std::function callback) { for (size_t i = 0; i < this->size(); i++) { if (callback((*this)[i], i)) return true; } return false; } bool find(const T& value) { for (size_t i = 0; i < this->size(); i++) { if(value == this->at(i)) return true; } return false; } bool find(std::function callback,T& value) { for (size_t i = 0; i < this->size(); i++) { if (callback((*this)[i], i)) { value =this->at(i); return true; } } return false; } void loop(std::function callback) { for (size_t i = 0; i < this->size(); i++) callback(this->at(i)); } void loop_fl(std::function callback) { for (size_t i = 0; i < this->size(); i++) callback(this->at(i),i==0,i==this->size()-1); } void rloop(std::function callback) { size_t size = this->size(); for (size_t i = 0; i < this->size(); i++) callback(this->at(size-i-1)); } void rloop_fl(std::function callback) { size_t size = this->size(); for (size_t i = 0; i < this->size(); i++) callback(this->at(size - i - 1), i == size - 1, i == 0); } }; }