From a489daa4750ca6e7978afff4d3b848785ba773c2 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 22 Apr 2022 11:51:19 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=8C=D1=88=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=BE=20=D1=81=D1=82=D1=80=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/main/containers/pideque.h | 264 ++++++++------------------------ libs/main/containers/pivector.h | 263 ++++++++----------------------- 2 files changed, 133 insertions(+), 394 deletions(-) diff --git a/libs/main/containers/pideque.h b/libs/main/containers/pideque.h index 34347747..8dd8dfb9 100644 --- a/libs/main/containers/pideque.h +++ b/libs/main/containers/pideque.h @@ -225,18 +225,10 @@ public: inline iterator(): parent(0), pos(0) {} - inline T & operator *() { - return (*parent)[pos]; - } - inline const T & operator *() const { - return (*parent)[pos]; - } - inline T & operator ->() { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline T & operator *() {return (*parent)[pos];} + inline const T & operator *() const {return (*parent)[pos];} + inline T & operator ->() {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline iterator & operator ++() { ++pos; @@ -274,33 +266,25 @@ public: return *this; } + friend inline iterator operator -(size_t p, const iterator & it) {return it - p;} friend inline iterator operator -(const iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline iterator operator -(size_t p, const iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const iterator & it1, const iterator & it2) { return it1.pos - it2.pos; } + friend inline iterator operator +(size_t p, const iterator & it) {return it + p;} friend inline iterator operator +(const iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline iterator operator +(size_t p, const iterator & it) { - return it + p; - } - inline bool operator ==(const iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const iterator & it1, const iterator & it2) { return it1.pos < it2.pos; } @@ -330,12 +314,8 @@ public: inline const_iterator(): parent(0), pos(0) {} - inline const T & operator *() const { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline const T & operator *() const {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline const_iterator & operator ++() { ++pos; @@ -373,33 +353,25 @@ public: return *this; } + friend inline const_iterator operator -(size_t p, const const_iterator & it) {return it - p;} friend inline const_iterator operator -(const const_iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline const_iterator operator -(size_t p, const const_iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const const_iterator & it1, const const_iterator & it2) { return it1.pos - it2.pos; } + friend inline const_iterator operator +(size_t p, const const_iterator & it) {return it + p;} friend inline const_iterator operator +(const const_iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline const_iterator operator +(size_t p, const const_iterator & it) { - return it + p; - } - inline bool operator ==(const const_iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const const_iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const const_iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const const_iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const const_iterator & it1, const const_iterator & it2) { return it1.pos < it2.pos; } @@ -429,18 +401,10 @@ public: inline reverse_iterator(): parent(0), pos(0) {} - inline T & operator *() { - return (*parent)[pos]; - } - inline const T & operator *() const { - return (*parent)[pos]; - } - inline T & operator ->() { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline T & operator *() {return (*parent)[pos];} + inline const T & operator *() const {return (*parent)[pos];} + inline T & operator ->() {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline reverse_iterator & operator ++() { --pos; @@ -478,33 +442,25 @@ public: return *this; } + friend inline reverse_iterator operator -(size_t p, const reverse_iterator & it) {return it - p;} friend inline reverse_iterator operator -(const reverse_iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline reverse_iterator operator -(size_t p, const reverse_iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const reverse_iterator & it1, const reverse_iterator & it2) { return it2.pos - it1.pos; } + friend inline reverse_iterator operator +(size_t p, const reverse_iterator & it) {return it + p;} friend inline reverse_iterator operator +(const reverse_iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline reverse_iterator operator +(size_t p, const reverse_iterator & it) { - return it + p; - } - inline bool operator ==(const reverse_iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const reverse_iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const reverse_iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const reverse_iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const reverse_iterator & it1, const reverse_iterator & it2) { return it1.pos < it2.pos; } @@ -533,12 +489,8 @@ public: typedef std::random_access_iterator_tag iterator_category; inline const_reverse_iterator(): parent(0), pos(0) {} - inline const T & operator *() const { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline const T & operator *() const {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline const_reverse_iterator & operator ++() { --pos; @@ -576,33 +528,25 @@ public: return *this; } + friend inline const_reverse_iterator operator -(size_t p, const const_reverse_iterator & it) {return it - p;} friend inline const_reverse_iterator operator -(const const_reverse_iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline const_reverse_iterator operator -(size_t p, const const_reverse_iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const const_reverse_iterator & it1, const const_reverse_iterator & it2) { return it2.pos - it1.pos; } + friend inline const_reverse_iterator operator +(size_t p, const const_reverse_iterator & it) {return it + p;} friend inline const_reverse_iterator operator +(const const_reverse_iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline const_reverse_iterator operator +(size_t p, const const_reverse_iterator & it) { - return it + p; - } - inline bool operator ==(const const_reverse_iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const const_reverse_iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const const_reverse_iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const const_reverse_iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const const_reverse_iterator & it1, const const_reverse_iterator & it2) { return it1.pos < it2.pos; } @@ -627,9 +571,7 @@ public: //! \~russian Если массив - пуст, возвращаемый итератор будет равен \a end(). //! \~\return \ref stl_iterators //! \~\sa \a end(), \a rbegin(), \a rend() - inline iterator begin() { - return iterator(this, 0); - } + inline iterator begin() {return iterator(this, 0);} //! \~\brief //! \~english Iterator to the element following the last element. @@ -642,16 +584,10 @@ public: //! попытка доступа к нему приведёт к выходу за разрешенную память. //! \~\return \ref stl_iterators //! \~\sa \a begin(), \a rbegin(), \a rend() - inline iterator end() { - return iterator(this, pid_size); - } + inline iterator end() {return iterator(this, pid_size);} - inline const_iterator begin() const { - return const_iterator(this, 0); - } - inline const_iterator end() const { - return const_iterator(this, pid_size); - } + inline const_iterator begin() const {return const_iterator(this, 0); } + inline const_iterator end() const {return const_iterator(this, pid_size);} //! \~\brief //! \~english Returns a reverse iterator to the first element of the reversed array. @@ -665,9 +601,7 @@ public: //! Если массив пустой, то совпадает с итератором \a rend(). //! \~\return \ref stl_iterators //! \~\sa \a rend(), \a begin(), \a end() - inline reverse_iterator rbegin() { - return reverse_iterator(this, pid_size - 1); - } + inline reverse_iterator rbegin() {return reverse_iterator(this, pid_size - 1);} //! \~\brief //! \~english Returns a reverse iterator to the element @@ -683,40 +617,28 @@ public: //! попытка доступа к нему приведёт к выходу за разрешенную память. //! \~\return \ref stl_iterators //! \~\sa \a rbegin(), \a begin(), \a end() - inline reverse_iterator rend() { - return reverse_iterator(this, -1); - } + inline reverse_iterator rend() {return reverse_iterator(this, -1);} - inline const_reverse_iterator rbegin() const { - return const_reverse_iterator(this, pid_size - 1); - } - inline const_reverse_iterator rend() const { - return const_reverse_iterator(this, -1); - } + inline const_reverse_iterator rbegin() const {return const_reverse_iterator(this, pid_size - 1);} + inline const_reverse_iterator rend() const {return const_reverse_iterator(this, -1);} //! \~\brief //! \~english Number of elements in the container. //! \~russian Количество элементов массива. //! \~\sa \a size_s(), \a capacity(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline size_t size() const { - return pid_size; - } + inline size_t size() const {return pid_size;} //! \~\brief //! \~english Number of elements in the container as signed value. //! \~russian Количество элементов массива в виде знакового числа. //! \~\sa \a size(), \a capacity(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline ssize_t size_s() const { - return pid_size; - } + inline ssize_t size_s() const {return pid_size;} //! \~\brief //! \~english Same as \a size(). //! \~russian Синоним \a size(). //! \~\sa \a size(), \a size_s(), \a capacity(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline size_t length() const { - return pid_size; - } + inline size_t length() const {return pid_size;} //! \~\brief //! \~english Number of elements that the container has currently allocated space for. @@ -725,13 +647,9 @@ public: //! \~english To find out the actual number of items, use the function \a size(). //! \~russian Чтобы узнать фактическое количество элементов используйте функцию \a size(). //! \~\sa \a reserve(), \a size(), \a size_s() - inline size_t capacity() const { - return pid_rsize; - } + inline size_t capacity() const {return pid_rsize;} - inline size_t _start() const { - return pid_start; - } + inline size_t _start() const {return pid_start;} //! \~\brief //! \~english Checks if the container has no elements. @@ -740,9 +658,7 @@ public: //! \~english **true** if the container is empty, **false** otherwise //! \~russian **true** если контейнер пуст, **false** иначе. //! \~\sa \a size(), \a size_s(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline bool isEmpty() const { - return (pid_size == 0); - } + inline bool isEmpty() const {return (pid_size == 0);} //! \~\brief //! \~english Checks if the container has elements. @@ -751,9 +667,7 @@ public: //! \~english **true** if the container is not empty, **false** otherwise //! \~russian **true** если контейнер не пуст, **false** иначе. //! \~\sa \a size(), \a size_s(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline bool isNotEmpty() const { - return (pid_size > 0); - } + inline bool isNotEmpty() const {return (pid_size > 0);} //! \~\brief //! \~english Tests whether at least one element in the array @@ -824,12 +738,8 @@ public: //! piCout << v; // {1, 2, 5, 9} //! \endcode //! \~\sa \a at() - inline T & operator [](size_t index) { - return pid_data[pid_start + index]; - } - inline const T & operator [](size_t index) const { - return pid_data[pid_start + index]; - } + inline T & operator [](size_t index) {return pid_data[pid_start + index];} + inline const T & operator [](size_t index) const {return pid_data[pid_start + index];} //! \brief //! \~english Read only access to element by `index`. @@ -841,9 +751,7 @@ public: //! \~russian Индекс элемента считается от `0`. //! Индекс элемента должен лежать в пределах от `0` до `size()-1`. //! Иначе это приведёт к неопределённому поведению программы и ошибкам памяти. - inline const T & at(size_t index) const { - return pid_data[pid_start + index]; - } + inline const T & at(size_t index) const {return pid_data[pid_start + index];} //! \brief //! \~english Last element. @@ -855,12 +763,8 @@ public: //! \~russian Возвращает ссылку на последний элемент в массиве. //! Эта функция предполагает, что массив не пустой. //! Иначе это приведёт к неопределённому поведению программы и ошибкам памяти. - inline T & back() { - return pid_data[pid_start + pid_size - 1]; - } - inline const T & back() const { - return pid_data[pid_start + pid_size - 1]; - } + inline T & back() {return pid_data[pid_start + pid_size - 1];} + inline const T & back() const {return pid_data[pid_start + pid_size - 1];} //! \brief //! \~english Last element. @@ -872,12 +776,8 @@ public: //! \~russian Возвращает ссылку на пенрвый элемент в массиве. //! Эта функция предполагает, что массив не пустой. //! Иначе это приведёт к неопределённому поведению программы и ошибкам памяти. - inline T & front() { - return pid_data[pid_start]; - } - inline const T & front() const { - return pid_data[pid_start]; - } + inline T & front() {return pid_data[pid_start];} + inline const T & front() const {return pid_data[pid_start];} //! \brief //! \~english Compare operator with array `v`. @@ -893,9 +793,7 @@ public: //! \brief //! \~english Compare operator with array `v`. //! \~russian Оператор сравнения с массивом `v`. - inline bool operator !=(const PIDeque & v) const { - return !(*this == v); - } + inline bool operator !=(const PIDeque & v) const {return !(*this == v);} //! \~\brief //! \~english Tests if element `e` exists in the array. @@ -1196,9 +1094,7 @@ public: //! memcpy(vec.data(1), a, 2 * sizeof(int)); //! piCout << v; // {2, 12, 13, 2} //! \endcode - inline T * data(size_t index = 0) { - return &(pid_data[pid_start + index]); - } + inline T * data(size_t index = 0) {return &(pid_data[pid_start + index]);} //! \~\brief //! \~english Read only pointer to array @@ -1218,9 +1114,7 @@ public: //! memcpy(a, v.data(), a.size() * sizeof(int)); //! piCout << a[0] << a[1] << a[2]; // 1 3 5 //! \endcode - inline const T * data(size_t index = 0) const { - return &(pid_data[pid_start + index]); - } + inline const T * data(size_t index = 0) const {return &(pid_data[pid_start + index]);} //! \~\brief //! \~english Creates sub-array of this array. @@ -1312,9 +1206,7 @@ public: //! \~english Same as \a fill(). //! \~russian Тоже самое что и \a fill(). //! \~\sa \a fill(), \a resize() - inline PIDeque & assign(const T & e = T()) { - return fill(e); - } + inline PIDeque & assign(const T & e = T()) {return fill(e);} //! \~\brief //! \~english First does `resize(new_size)` then `fill(e)`. @@ -1894,9 +1786,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a prepend(), \a push_front(), \a push_back(), \a insert() - inline PIDeque & append(const T & e) { - return push_back(e); - } + inline PIDeque & append(const T & e) {return push_back(e);} //! \brief //! \~english Appends the given element `e` to the end of the array. @@ -1905,9 +1795,7 @@ public: //! \~english Overloaded function. //! \~russian Перегруженая функция. //! \~\sa \a append() - inline PIDeque & append(T && e) { - return push_back(std::move(e)); - } + inline PIDeque & append(T && e) {return push_back(std::move(e));} //! \brief //! \~english Appends the given elements to the end of the array. @@ -1920,9 +1808,7 @@ public: //! Добавляет элементы из //! [списка инициализации C++11](https://ru.cppreference.com/w/cpp/utility/initializer_list). //! \~\sa \a append() - inline PIDeque & append(std::initializer_list init_list) { - return push_back(init_list); - } + inline PIDeque & append(std::initializer_list init_list) {return push_back(init_list);} //! \brief //! \~english Appends the given array `v` to the end of the array. @@ -1936,9 +1822,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append() - inline PIDeque & append(const PIDeque & v) { - return push_back(v); - } + inline PIDeque & append(const PIDeque & v) {return push_back(v);} //! \brief //! \~english Appends the given element `e` to the end of the array. @@ -1950,9 +1834,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append() - inline PIDeque & operator <<(const T & e) { - return push_back(e); - } + inline PIDeque & operator <<(const T & e) {return push_back(e);} //! \brief //! \~english Appends the given element `e` to the end of the array. @@ -1964,9 +1846,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append() - inline PIDeque & operator <<(T && e) { - return push_back(std::move(e)); - } + inline PIDeque & operator <<(T && e) {return push_back(std::move(e));} //! \brief //! \~english Appends the given array `v` to the end of the array. @@ -1978,9 +1858,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append(), \a push_back() - inline PIDeque & operator <<(const PIDeque & v) { - return append(v); - } + inline PIDeque & operator <<(const PIDeque & v) {return append(v);} //! \brief //! \~english Appends the given element `e` to the begin of the array. @@ -2082,9 +1960,7 @@ public: //! piCout << v; // {5, 4, 1, 2, 3} //! \endcode //! \~\sa \a push_back(), \a append(), \a prepend(), \a insert() - inline PIDeque & prepend(const T & e) { - return push_front(e); - } + inline PIDeque & prepend(const T & e) {return push_front(e);} //! \brief //! \~english Appends the given element `e` to the begin of the array. @@ -2093,9 +1969,7 @@ public: //! \~english Overloaded function. //! \~russian Перегруженая функция. //! \~\sa \a prepend() - inline PIDeque & prepend(T && e) { - return push_front(std::move(e)); - } + inline PIDeque & prepend(T && e) {return push_front(std::move(e));} //! \brief //! \~english Appends the given array `v` to the begin of the array. @@ -2109,9 +1983,7 @@ public: //! piCout << v; // {4, 5, 1, 2, 3} //! \endcode //! \~\sa \a prepend() - inline PIDeque & prepend(const PIDeque & v) { - return push_front(v); - } + inline PIDeque & prepend(const PIDeque & v) {return push_front(v);} //! \brief //! \~english Appends the given elements to the begin of the array. @@ -2124,9 +1996,7 @@ public: //! Добавляет элементы из //! [списка инициализации C++11](https://ru.cppreference.com/w/cpp/utility/initializer_list). //! \~\sa \a append() - inline PIDeque & prepend(std::initializer_list init_list) { - return prepend(init_list); - } + inline PIDeque & prepend(std::initializer_list init_list) {return prepend(init_list);} //! \brief //! \~english Remove one element from the end of the array. @@ -2651,9 +2521,7 @@ inline PICout operator <<(PICout s, const PIDeque & v) { } template -inline void piSwap(PIDeque & f, PIDeque & s) { - f.swap(s); -} +inline void piSwap(PIDeque & f, PIDeque & s) {f.swap(s);} #endif // PIDEQUE_H diff --git a/libs/main/containers/pivector.h b/libs/main/containers/pivector.h index a99eec27..146607f2 100644 --- a/libs/main/containers/pivector.h +++ b/libs/main/containers/pivector.h @@ -226,18 +226,10 @@ public: inline iterator(): parent(0), pos(0) {} - inline T & operator *() { - return (*parent)[pos]; - } - inline const T & operator *() const { - return (*parent)[pos]; - } - inline T & operator ->() { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline T & operator *() {return (*parent)[pos];} + inline const T & operator *() const {return (*parent)[pos];} + inline T & operator ->() {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline iterator & operator ++() { ++pos; @@ -275,33 +267,25 @@ public: return *this; } + friend inline iterator operator -(size_t p, const iterator & it) {return it - p;} friend inline iterator operator -(const iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline iterator operator -(size_t p, const iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const iterator & it1, const iterator & it2) { return it1.pos - it2.pos; } + friend inline iterator operator +(size_t p, const iterator & it) {return it + p;} friend inline iterator operator +(const iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline iterator operator +(size_t p, const iterator & it) { - return it + p; - } - inline bool operator ==(const iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const iterator & it1, const iterator & it2) { return it1.pos < it2.pos; } @@ -331,12 +315,8 @@ public: inline const_iterator(): parent(0), pos(0) {} - inline const T & operator *() const { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline const T & operator *() const {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline const_iterator & operator ++() { ++pos; @@ -374,33 +354,25 @@ public: return *this; } + friend inline const_iterator operator -(size_t p, const const_iterator & it) {return it - p;} friend inline const_iterator operator -(const const_iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline const_iterator operator -(size_t p, const const_iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const const_iterator & it1, const const_iterator & it2) { return it1.pos - it2.pos; } + friend inline const_iterator operator +(size_t p, const const_iterator & it) {return it + p;} friend inline const_iterator operator +(const const_iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline const_iterator operator +(size_t p, const const_iterator & it) { - return it + p; - } - inline bool operator ==(const const_iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const const_iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const const_iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const const_iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const const_iterator & it1, const const_iterator & it2) { return it1.pos < it2.pos; } @@ -430,18 +402,10 @@ public: inline reverse_iterator(): parent(0), pos(0) {} - inline T & operator *() { - return (*parent)[pos]; - } - inline const T & operator *() const { - return (*parent)[pos]; - } - inline T & operator ->() { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline T & operator *() {return (*parent)[pos];} + inline const T & operator *() const {return (*parent)[pos];} + inline T & operator ->() {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline reverse_iterator & operator ++() { --pos; @@ -479,33 +443,25 @@ public: return *this; } + friend inline reverse_iterator operator -(size_t p, const reverse_iterator & it) {return it - p;} friend inline reverse_iterator operator -(const reverse_iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline reverse_iterator operator -(size_t p, const reverse_iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const reverse_iterator & it1, const reverse_iterator & it2) { return it2.pos - it1.pos; } + friend inline reverse_iterator operator +(size_t p, const reverse_iterator & it) {return it + p;} friend inline reverse_iterator operator +(const reverse_iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline reverse_iterator operator +(size_t p, const reverse_iterator & it) { - return it + p; - } - inline bool operator ==(const reverse_iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const reverse_iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const reverse_iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const reverse_iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const reverse_iterator & it1, const reverse_iterator & it2) { return it1.pos < it2.pos; } @@ -534,12 +490,8 @@ public: typedef std::random_access_iterator_tag iterator_category; inline const_reverse_iterator(): parent(0), pos(0) {} - inline const T & operator *() const { - return (*parent)[pos]; - } - inline const T & operator ->() const { - return (*parent)[pos]; - } + inline const T & operator *() const {return (*parent)[pos];} + inline const T & operator ->() const {return (*parent)[pos];} inline const_reverse_iterator & operator ++() { --pos; @@ -577,33 +529,25 @@ public: return *this; } + friend inline const_reverse_iterator operator -(size_t p, const const_reverse_iterator & it) {return it - p;} friend inline const_reverse_iterator operator -(const const_reverse_iterator & it, size_t p) { auto tmp = it; tmp -= p; return tmp; } - friend inline const_reverse_iterator operator -(size_t p, const const_reverse_iterator & it) { - return it - p; - } friend inline std::ptrdiff_t operator -(const const_reverse_iterator & it1, const const_reverse_iterator & it2) { return it2.pos - it1.pos; } + friend inline const_reverse_iterator operator +(size_t p, const const_reverse_iterator & it) {return it + p;} friend inline const_reverse_iterator operator +(const const_reverse_iterator & it, size_t p) { auto tmp = it; tmp += p; return tmp; } - friend inline const_reverse_iterator operator +(size_t p, const const_reverse_iterator & it) { - return it + p; - } - inline bool operator ==(const const_reverse_iterator & it) const { - return (pos == it.pos); - } - inline bool operator !=(const const_reverse_iterator & it) const { - return (pos != it.pos); - } + inline bool operator ==(const const_reverse_iterator & it) const {return (pos == it.pos);} + inline bool operator !=(const const_reverse_iterator & it) const {return (pos != it.pos);} friend inline bool operator <(const const_reverse_iterator & it1, const const_reverse_iterator & it2) { return it1.pos < it2.pos; } @@ -615,7 +559,8 @@ public: } friend inline bool operator >=(const const_reverse_iterator & it1, const const_reverse_iterator & it2) { return it1.pos >= it2.pos; - } }; + } + }; //! \~\brief //! \~english Iterator to the first element. @@ -626,9 +571,7 @@ public: //! \~russian Если массив пустой, возвращаемый итератор будет равен \a end(). //! \~\return \ref stl_iterators //! \~\sa \a end(), \a rbegin(), \a rend() - inline iterator begin() { - return iterator(this, 0); - } + inline iterator begin() {return iterator(this, 0);} //! \~\brief //! \~english Iterator to the element following the last element. @@ -641,16 +584,10 @@ public: //! попытка доступа к нему приведёт к выходу за разрешенную память. //! \~\return \ref stl_iterators //! \~\sa \a begin(), \a rbegin(), \a rend() - inline iterator end() { - return iterator(this, piv_size); - } + inline iterator end() {return iterator(this, piv_size);} - inline const_iterator begin() const { - return const_iterator(this, 0); - } - inline const_iterator end() const { - return const_iterator(this, piv_size); - } + inline const_iterator begin() const {return const_iterator(this, 0);} + inline const_iterator end() const {return const_iterator(this, piv_size);} //! \~\brief //! \~english Returns a reverse iterator to the first element of the reversed array. @@ -664,9 +601,7 @@ public: //! Если массив пустой, то совпадает с итератором \a rend(). //! \~\return \ref stl_iterators //! \~\sa \a rend(), \a begin(), \a end() - inline reverse_iterator rbegin() { - return reverse_iterator(this, piv_size - 1); - } + inline reverse_iterator rbegin() {return reverse_iterator(this, piv_size - 1);} //! \~\brief //! \~english Returns a reverse iterator to the element @@ -682,40 +617,28 @@ public: //! попытка доступа к нему приведёт к выходу за разрешенную память. //! \~\return \ref stl_iterators //! \~\sa \a rbegin(), \a begin(), \a end() - inline reverse_iterator rend() { - return reverse_iterator(this, -1); - } + inline reverse_iterator rend() {return reverse_iterator(this, -1);} - inline const_reverse_iterator rbegin() const { - return const_reverse_iterator(this, piv_size - 1); - } - inline const_reverse_iterator rend() const { - return const_reverse_iterator(this, -1); - } + inline const_reverse_iterator rbegin() const {return const_reverse_iterator(this, piv_size - 1);} + inline const_reverse_iterator rend() const {return const_reverse_iterator(this, -1);} //! \~\brief //! \~english Number of elements in the container. //! \~russian Количество элементов массива. //! \~\sa \a size_s(), \a capacity(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline size_t size() const { - return piv_size; - } + inline size_t size() const {return piv_size;} //! \~\brief //! \~english Number of elements in the container as signed value. //! \~russian Количество элементов массива в виде знакового числа. //! \~\sa \a size(), \a capacity(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline ssize_t size_s() const { - return piv_size; - } + inline ssize_t size_s() const {return piv_size;} //! \~\brief //! \~english Same as \a size(). //! \~russian Синоним \a size(). //! \~\sa \a size(), \a size_s(), \a capacity(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline size_t length() const { - return piv_size; - } + inline size_t length() const {return piv_size;} //! \~\brief //! \~english Number of elements that the container has currently allocated space for. @@ -724,9 +647,7 @@ public: //! \~english To find out the actual number of items, use the function \a size(). //! \~russian Чтобы узнать фактическое количество элементов используйте функцию \a size(). //! \~\sa \a reserve(), \a size(), \a size_s() - inline size_t capacity() const { - return piv_rsize; - } + inline size_t capacity() const {return piv_rsize;} //! \~\brief //! \~english Checks if the container has no elements. @@ -735,9 +656,7 @@ public: //! \~english **true** if the container is empty, **false** otherwise //! \~russian **true** если контейнер пуст, **false** иначе. //! \~\sa \a size(), \a size_s(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline bool isEmpty() const { - return (piv_size == 0); - } + inline bool isEmpty() const {return (piv_size == 0);} //! \~\brief //! \~english Checks if the container has elements. @@ -746,9 +665,7 @@ public: //! \~english **true** if the container is not empty, **false** otherwise //! \~russian **true** если контейнер не пуст, **false** иначе. //! \~\sa \a size(), \a size_s(), \a isEmpty(), \a isNotEmpty(), \a resize(), \a reserve() - inline bool isNotEmpty() const { - return (piv_size > 0); - } + inline bool isNotEmpty() const {return (piv_size > 0);} //! \~\brief //! \~english Tests whether at least one element in the array @@ -819,12 +736,8 @@ public: //! piCout << v; // {1, 2, 5, 9} //! \endcode //! \~\sa \a at() - inline T & operator [](size_t index) { - return piv_data[index]; - } - inline const T & operator [](size_t index) const { - return piv_data[index]; - } + inline T & operator [](size_t index) {return piv_data[index];} + inline const T & operator [](size_t index) const {return piv_data[index];} //! \brief //! \~english Read only access to element by `index`. @@ -836,9 +749,7 @@ public: //! \~russian Индекс элемента считается от `0`. //! Индекс элемента должен лежать в пределах от `0` до `size()-1`. //! Иначе это приведёт к неопределённому поведению программы и ошибкам памяти. - inline const T & at(size_t index) const { - return piv_data[index]; - } + inline const T & at(size_t index) const {return piv_data[index];} //! \brief //! \~english Last element. @@ -850,12 +761,8 @@ public: //! \~russian Возвращает ссылку на последний элемент в массиве. //! Эта функция предполагает, что массив не пустой. //! Иначе это приведёт к неопределённому поведению программы и ошибкам памяти. - inline T & back() { - return piv_data[piv_size - 1]; - } - inline const T & back() const { - return piv_data[piv_size - 1]; - } + inline T & back() {return piv_data[piv_size - 1];} + inline const T & back() const {return piv_data[piv_size - 1];} //! \brief //! \~english Last element. @@ -867,12 +774,8 @@ public: //! \~russian Возвращает ссылку на пенрвый элемент в массиве. //! Эта функция предполагает, что массив не пустой. //! Иначе это приведёт к неопределённому поведению программы и ошибкам памяти. - inline T & front() { - return piv_data[0]; - } - inline const T & front() const { - return piv_data[0]; - } + inline T & front() {return piv_data[0];} + inline const T & front() const {return piv_data[0];} //! \brief //! \~english Compare operator with array `v`. @@ -888,9 +791,7 @@ public: //! \brief //! \~english Compare operator with array `v`. //! \~russian Оператор сравнения с массивом `v`. - inline bool operator !=(const PIVector & v) const { - return !(*this == v); - } + inline bool operator !=(const PIVector & v) const {return !(*this == v);} //! \~\brief //! \~english Tests if element `e` exists in the array. @@ -1183,9 +1084,7 @@ public: //! memcpy(vec.data(1), a, 2 * sizeof(int)); //! piCout << v; // {2, 12, 13, 2} //! \endcode - inline T * data(size_t index = 0) { - return &(piv_data[index]); - } + inline T * data(size_t index = 0) {return &(piv_data[index]);} //! \~\brief //! \~english Read only pointer to array @@ -1205,9 +1104,7 @@ public: //! memcpy(a, v.data(), a.size() * sizeof(int)); //! piCout << a[0] << a[1] << a[2]; // 1 3 5 //! \endcode - inline const T * data(size_t index = 0) const { - return &(piv_data[index]); - } + inline const T * data(size_t index = 0) const {return &(piv_data[index]);} //! \~\brief //! \~english Creates sub-array of this array. @@ -1298,9 +1195,7 @@ public: //! \~english Same as \a fill(). //! \~russian Тоже самое что и \a fill(). //! \~\sa \a fill(), \a resize() - inline PIVector & assign(const T & e = T()) { - return fill(e); - } + inline PIVector & assign(const T & e = T()) {return fill(e);} //! \~\brief //! \~english First does `resize(new_size)` then `fill(e)`. @@ -1832,9 +1727,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a prepend(), \a push_front(), \a push_back(), \a insert() - inline PIVector & append(const T & e) { - return push_back(e); - } + inline PIVector & append(const T & e) {return push_back(e);} //! \brief //! \~english Appends the given element `e` to the end of the array. @@ -1843,9 +1736,7 @@ public: //! \~english Overloaded function. //! \~russian Перегруженая функция. //! \~\sa \a append() - inline PIVector & append(T && e) { - return push_back(std::move(e)); - } + inline PIVector & append(T && e) {return push_back(std::move(e));} //! \brief //! \~english Appends the given elements to the end of the array. @@ -1858,9 +1749,7 @@ public: //! Добавляет элементы из //! [списка инициализации C++11](https://ru.cppreference.com/w/cpp/utility/initializer_list). //! \~\sa \a append() - inline PIVector & append(std::initializer_list init_list) { - return push_back(init_list); - } + inline PIVector & append(std::initializer_list init_list) {return push_back(init_list);} //! \brief //! \~english Appends the given array `v` to the end of the array. @@ -1874,9 +1763,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append() - inline PIVector & append(const PIVector & v) { - return push_back(v); - } + inline PIVector & append(const PIVector & v) {return push_back(v);} //! \brief //! \~english Appends the given element `e` to the end of the array. @@ -1888,9 +1775,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append() - inline PIVector & operator <<(const T & e) { - return push_back(e); - } + inline PIVector & operator <<(const T & e) {return push_back(e);} //! \brief //! \~english Appends the given element `e` to the end of the array. @@ -1902,9 +1787,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append() - inline PIVector & operator <<(T && e) { - return push_back(std::move(e)); - } + inline PIVector & operator <<(T && e) { eturn push_back(std::move(e));} //! \brief //! \~english Appends the given array `v` to the end of the array. @@ -1916,9 +1799,7 @@ public: //! piCout << v; // {1, 2, 3, 4, 5} //! \endcode //! \~\sa \a append() - inline PIVector & operator <<(const PIVector & v) { - return push_back(v); - } + inline PIVector & operator <<(const PIVector & v) {return push_back(v);} //! \brief //! \~english Appends the given element `e` to the begin of the array. @@ -2004,9 +1885,7 @@ public: //! piCout << v; // {5, 4, 1, 2, 3} //! \endcode //! \~\sa \a append(), \a push_back(), \a push_front(), \a insert() - inline PIVector & prepend(const T & e) { - return push_front(e); - } + inline PIVector & prepend(const T & e) {return push_front(e);} //! \brief //! \~english Appends the given element `e` to the begin of the array. @@ -2015,9 +1894,7 @@ public: //! \~english Overloaded function. //! \~russian Перегруженая функция. //! \~\sa \a prepend() - inline PIVector & prepend(T && e) { - return push_front(std::move(e)); - } + inline PIVector & prepend(T && e) {return push_front(std::move(e));} //! \brief //! \~english Appends the given array `v` to the begin of the array. @@ -2031,9 +1908,7 @@ public: //! piCout << v; // {4, 5, 1, 2, 3} //! \endcode //! \~\sa \a prepend() - inline PIVector & prepend(const PIVector & v) { - return push_front(v); - } + inline PIVector & prepend(const PIVector & v) {return push_front(v);} //! \brief //! \~english Appends the given elements to the begin of the array. @@ -2046,9 +1921,7 @@ public: //! Добавляет элементы из //! [списка инициализации C++11](https://ru.cppreference.com/w/cpp/utility/initializer_list). //! \~\sa \a append() - inline PIVector & prepend(std::initializer_list init_list) { - return prepend(init_list); - } + inline PIVector & prepend(std::initializer_list init_list) {return prepend(init_list);} //! \brief //! \~english Remove one element from the end of the array. @@ -2527,8 +2400,6 @@ inline PICout operator <<(PICout s, const PIVector & v) { } template -inline void piSwap(PIVector & f, PIVector & s) { - f.swap(s); -} +inline void piSwap(PIVector & f, PIVector & s) {f.swap(s);} #endif // PIVECTOR_H