![]() |
PIP 5.5.3
Platform-Independent Primitives
|
Sequence linear container - dynamic size array of any type. More...
#include <pivector.h>

Public Member Functions | |
| PIVector () | |
| Constructs an empty array. | |
| PIVector (const T *data, size_t size) | |
Contructs array from raw data. This constructor reserve size and copy from data pointer. | |
| PIVector (const PIVector< T > &v) | |
| Copy constructor. | |
| PIVector (std::initializer_list< T > init_list) | |
| Contructs array from C++11 initializer list. More... | |
| PIVector (size_t size, const T &e=T()) | |
Contructs array with size size filled elements e. | |
| PIVector (size_t size, std::function< T(size_t i)> f) | |
Contructs array with size size and elements created by function f(size_t i). More... | |
| PIVector (PIVector< T > &&v) | |
| Move constructor. | |
| PIVector< T > & | operator= (const PIVector< T > &v) |
| Assign operator. | |
| PIVector< T > & | operator= (PIVector< T > &&v) |
| Assign move operator. | |
| iterator | begin () |
| Iterator to the first element. More... | |
| iterator | end () |
| Iterator to the element following the last element. More... | |
| reverse_iterator | rbegin () |
| Returns a reverse iterator to the first element of the reversed array. More... | |
| reverse_iterator | rend () |
| Returns a reverse iterator to the element following the last element of the reversed array. More... | |
| size_t | size () const |
| Number of elements in the container. More... | |
| ssize_t | size_s () const |
| Number of elements in the container as signed value. More... | |
| size_t | length () const |
| Same as size(). More... | |
| size_t | capacity () const |
| Number of elements that the container has currently allocated space for. More... | |
| bool | isEmpty () const |
| Checks if the container has no elements. More... | |
| bool | isNotEmpty () const |
| Checks if the container has elements. More... | |
| bool | any (std::function< bool(const T &e)> test) const |
Tests whether at least one element in the array passes the test implemented by the provided function test. More... | |
| bool | every (std::function< bool(const T &e)> test) const |
Tests whether all elements in the array passes the test implemented by the provided function test. More... | |
| T & | operator[] (size_t index) |
Full access to element by index. More... | |
| const T & | at (size_t index) const |
Read only access to element by index. More... | |
| const T & | atWhere (std::function< bool(const T &e)> test, ssize_t start=0, const T &def=T()) const |
Returns the first element of the array that passes the test implemented by the provided function test or def if there is no such element. More... | |
| const T & | lastAtWhere (std::function< bool(const T &e)> test, ssize_t start=-1, const T &def=T()) const |
Returns the last element of the array that passes the test implemented by the provided function test or def if there is no such element. More... | |
| T & | back () |
| Last element. More... | |
| T & | front () |
| Last element. More... | |
| bool | operator== (const PIVector< T > &v) const |
Compare operator with array v. | |
| bool | operator!= (const PIVector< T > &v) const |
Compare operator with array v. | |
| bool | contains (const T &e, ssize_t start=0) const |
Tests if element e exists in the array. More... | |
| bool | contains (const PIVector< T > &v, ssize_t start=0) const |
Tests if all elements of v exists in the array. More... | |
| int | entries (const T &e, ssize_t start=0) const |
Count elements equal e in the array. More... | |
| int | entries (std::function< bool(const T &e)> test, ssize_t start=0) const |
Count elements in the array passes the test implemented by the provided function test. More... | |
| ssize_t | indexOf (const T &e, ssize_t start=0) const |
Returns the first index at which a given element e can be found in the array, or -1 if it is not present. More... | |
| ssize_t | indexWhere (std::function< bool(const T &e)> test, ssize_t start=0) const |
Returns the first index passes the test implemented by the provided function test, or -1 if it is not present. can be found in the array, or -1 if it is not present. More... | |
| ssize_t | lastIndexOf (const T &e, ssize_t start=-1) const |
Returns the last index at which a given element e can be found in the array, or -1 if it is not present. More... | |
| ssize_t | lastIndexWhere (std::function< bool(const T &e)> test, ssize_t start=-1) const |
Returns the last index passes the test implemented by the provided function test, or -1 if it is not present. More... | |
| T * | data (size_t index=0) |
| Pointer to array. More... | |
| const T * | data (size_t index=0) const |
| Read only pointer to array. More... | |
| PIVector< T > | getRange (size_t index, size_t count) const |
| Creates sub-array of this array. More... | |
| template<typename T1 = T, typename std::enable_if<!std::is_trivially_copyable< T1 >::value, int >::type = 0> | |
| PIVector< T > & | clear () |
| Clear array, remove all elements. More... | |
| PIVector< T > & | fill (const T &e=T()) |
| Assigns element 'e' to all items in the array. More... | |
| PIVector< T > & | fill (std::function< T(size_t i)> f) |
| Assigns result of function 'f(size_t i)' to all items in the array. More... | |
| PIVector< T > & | assign (const T &e=T()) |
| Same as fill(). More... | |
| template<typename T1 = T, typename std::enable_if<!std::is_trivially_copyable< T1 >::value, int >::type = 0> | |
| PIVector< T > & | assign (size_t new_size, const T &f) |
First does resize(new_size) then fill(e). More... | |
| PIVector< T > & | resize (size_t new_size, const T &e=T()) |
Sets size of the array, new elements are copied from e. More... | |
| PIVector< T > & | resize (size_t new_size, std::function< T(size_t i)> f) |
Sets size of the array, new elements created by function f(size_t i). More... | |
| PIVector< T > & | reserve (size_t new_size) |
Attempts to allocate memory for at least new_size elements. More... | |
| PIVector< T > & | insert (size_t index, const T &e=T()) |
Inserts value e at index position in the array. More... | |
| PIVector< T > & | insert (size_t index, T &&e) |
Inserts value e at index position in the array. More... | |
| PIVector< T > & | insert (size_t index, const PIVector< T > &v) |
Inserts array v at index position in the array. More... | |
| PIVector< T > & | insert (size_t index, std::initializer_list< T > init_list) |
Inserts the given elements at index position in the array. More... | |
| PIVector< T > & | remove (size_t index, size_t count=1) |
Removes count elements from the middle of the array, starting at index position. More... | |
| void | swap (PIVector< T > &v) |
Swaps array v other with this array. More... | |
| PIVector< T > & | sort () |
| Sorts the elements in non-descending order. More... | |
| PIVector< T > & | sort (std::function< bool(const T &a, const T &b)> comp) |
| Sorts the elements in non-descending order. More... | |
| PIVector< T > & | reverse () |
| Reverses this array. More... | |
| PIVector< T > | reversed () const |
| Returns reversed array. More... | |
| PIVector< T > & | enlarge (ssize_t add_size, const T &e=T()) |
Increases or decreases the size of the array by add_size elements. More... | |
| PIVector< T > & | removeOne (const T &e) |
Remove no more than one element equal e. More... | |
| PIVector< T > & | removeAll (const T &e) |
Remove all elements equal e. More... | |
| PIVector< T > & | removeWhere (std::function< bool(const T &e)> test) |
Remove all elements in the array passes the test implemented by the provided function test. More... | |
| PIVector< T > & | push_back (const T &e) |
Appends the given element e to the end of the array. More... | |
| PIVector< T > & | push_back (T &&e) |
Appends the given element e to the end of the array. More... | |
| PIVector< T > & | push_back (std::initializer_list< T > init_list) |
| Appends the given elements to the end of the array. More... | |
| PIVector< T > & | push_back (const PIVector< T > &v) |
Appends the given array v to the end of the array. More... | |
| PIVector< T > & | append (const T &e) |
Appends the given element e to the end of the array. More... | |
| PIVector< T > & | append (T &&e) |
Appends the given element e to the end of the array. More... | |
| PIVector< T > & | append (std::initializer_list< T > init_list) |
| Appends the given elements to the end of the array. More... | |
| PIVector< T > & | append (const PIVector< T > &v) |
Appends the given array v to the end of the array. More... | |
| PIVector< T > & | operator<< (const T &e) |
Appends the given element e to the end of the array. More... | |
| PIVector< T > & | operator<< (T &&e) |
Appends the given element e to the end of the array. More... | |
| PIVector< T > & | operator<< (const PIVector< T > &v) |
Appends the given array v to the end of the array. More... | |
| PIVector< T > & | push_front (const T &e) |
Appends the given element e to the begin of the array. More... | |
| PIVector< T > & | push_front (T &&e) |
Appends the given element e to the begin of the array. More... | |
| PIVector< T > & | push_front (const PIVector< T > &v) |
Appends the given array v to the begin of the array. More... | |
| PIVector< T > & | push_front (std::initializer_list< T > init_list) |
| Appends the given elements to the begin of the array. More... | |
| PIVector< T > & | prepend (const T &e) |
Appends the given element e to the begin of the array. More... | |
| PIVector< T > & | prepend (T &&e) |
Appends the given element e to the begin of the array. More... | |
| PIVector< T > & | prepend (const PIVector< T > &v) |
Appends the given array v to the begin of the array. More... | |
| PIVector< T > & | prepend (std::initializer_list< T > init_list) |
| Appends the given elements to the begin of the array. More... | |
| PIVector< T > & | pop_back () |
| Remove one element from the end of the array. More... | |
| PIVector< T > & | pop_front () |
| Remove one element from the begining of the array. More... | |
| T | take_back () |
| Remove one element from the end of the array and return it. More... | |
| T | take_front () |
| Remove one element from the begining of the array and return it. More... | |
| template<typename ST > | |
| PIVector< ST > | toType () const |
| Returns an array converted to another type. More... | |
| PIVector< T > | filter (std::function< bool(const T &e)> test) const |
Returns a new array with all elements that pass the test implemented by the provided function bool test(const T & e). More... | |
| PIVector< T > | filterIndexed (std::function< bool(size_t index, const T &e)> test) const |
Same as filter() but with index parameter in test. More... | |
| PIVector< T > | filterReverse (std::function< bool(const T &e)> test) const |
| Same as filter() but from end to begin (from right to left). More... | |
| PIVector< T > | filterReverseIndexed (std::function< bool(size_t index, const T &e)> test) const |
Same as filterReverse() but with index parameter in test. More... | |
| void | forEach (std::function< void(const T &e)> f) const |
Execute function void f(const T & e) for every element in array. More... | |
| PIVector< T > & | forEach (std::function< void(T &e)> f) |
Execute function void f(T & e) for every element in array. More... | |
| void | forEachIndexed (std::function< void(size_t index, const T &e)> f) const |
Same as forEach() but with index parameter in f. More... | |
| PIVector< T > & | forEachIndexed (std::function< void(size_t index, T &e)> f) |
| Same as forEachIndexed(), but allows you to change the elements of the array. More... | |
| void | forEachReverse (std::function< void(const T &e)> f) const |
| Same as forEach() but from end to begin (from right to left). More... | |
| PIVector< T > & | forEachReverse (std::function< void(T &e)> f) |
| Same as forEachReverse(), but allows you to change the elements of the array. More... | |
| void | forEachReverseIndexed (std::function< void(size_t index, const T &e)> f) const |
| Same as forEachIndexed() but from end to begin (from right to left). More... | |
| PIVector< T > & | forEachReverseIndexed (std::function< void(size_t index, T &e)> f) |
| Same as forEachReverseIndexed(), but allows you to change the elements of the array. More... | |
| template<typename ST > | |
| PIVector< ST > | map (std::function< ST(const T &e)> f) const |
Сreates a new array populated with the results of calling a provided function ST f(const T & e) on every element in the calling array. More... | |
| template<typename ST > | |
| PIVector< ST > | mapIndexed (std::function< ST(size_t index, const T &e)> f) const |
Same as map() but with index parameter in f. More... | |
| template<typename ST > | |
| PIVector< ST > | mapReverse (std::function< ST(const T &e)> f) const |
| Same as map() but from end to begin (from right to left). More... | |
| template<typename ST > | |
| PIVector< ST > | mapReverseIndexed (std::function< ST(size_t index, const T &e)> f) const |
Same as mapReverse() but with index parameter in f. More... | |
| template<typename ST > | |
| ST | reduce (std::function< ST(const T &e, const ST &acc)> f, const ST &initial=ST()) const |
Applies the function ST f(const T & e, const ST & acc) to each element of the array (from left to right), returns one value. More... | |
| template<typename ST > | |
| ST | reduceIndexed (std::function< ST(size_t index, const T &e, const ST &acc)> f, const ST &initial=ST()) const |
Same as reduce() but with index parameter in f. More... | |
| template<typename ST > | |
| ST | reduceReverse (std::function< ST(const T &e, const ST &acc)> f, const ST &initial=ST()) const |
| Same as reduce() but from end to begin (from right to left). More... | |
| template<typename ST > | |
| ST | reduceReverseIndexed (std::function< ST(size_t index, const T &e, const ST &acc)> f, const ST &initial=ST()) const |
Same as reduceReverse() but with index parameter in f. More... | |
| PIVector< PIVector< T > > | reshape (size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const |
| Changes the dimension of the array, creates a two-dimensional array from a one-dimensional array. More... | |
| template<typename C , typename std::enable_if< std::is_same< T, PIVector< C > >::value, int >::type = 0> | |
| PIVector< C > | flatten (ReshapeOrder order=ReshapeByRow) const |
| Changes the dimension of the array, creates a one-dimensional array from a two-dimensional array. More... | |
| template<typename C , typename std::enable_if< std::is_same< T, PIVector< C > >::value, int >::type = 0> | |
| PIVector< PIVector< C > > | reshape (size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const |
| Changes the dimension of the two-dimensional array. More... | |
| PIVector< PIVector< T > > | split (const T &separator) const |
Divides an array into a two-dimensional array using the separator separator. More... | |
| PIVector< PIVector< T > > | splitBySize (size_t sz) const |
Divides an array into a two-dimensional array in chunks of no more than sz. More... | |
| PIVector< T > | takeRange (size_t index, size_t count) |
| Cut sub-array of this array. More... | |
Sequence linear container - dynamic size array of any type.
The elements are stored contiguously, which means that elements can be accessed not only through iterators, but also using offsets to regular pointers to elements. This means that a pointer to an element of a PIVector may be passed to any function that expects a pointer to an element of an array. To add elements you can use functions append() and insert(), to remove elements you can use functions remove() and removeOne(), removeWhere(). Change size by function resize() and assign(). Items in an array are numbered, starting from zero. This number is called the item's index. So the first item has index 0, the last has index size() - 1. A set of various convenient functions is also available for the array, for example: indexOf(), contains(), entries(), isEmpty(), isNotEmpty(), every(), any(), forEach(), indexWhere(), getRange(), sort(), map(), reduce(), filter(), flatten(), reshape() and others.
The storage of the PIVector is handled automatically, being expanded as needed. PIVector usually occupy more space than static arrays, because more memory is allocated to handle future growth. This way a PIVector does not need to reallocate each time an element is inserted, but only when the additional memory is exhausted. The total amount of allocated memory can be queried using capacity() function. Reallocations are usually costly operations in terms of performance. The reserve() function can be used to eliminate reallocations if the number of elements is known beforehand.
The complexity (efficiency) of common operations on PIVector is as follows:
|
inline |
Contructs array from C++11 initializer list.
|
inline |
Contructs array with size size and elements created by function f(size_t i).
Can use Lambda expressions as constructor argument.
|
inline |
Iterator to the first element.
If the array is empty, the returned iterator is equal to end().
|
inline |
Iterator to the element following the last element.
This element acts as a placeholder; attempting to access it results in undefined behavior.
|
inline |
Returns a reverse iterator to the first element of the reversed array.
It corresponds to the last element of the non-reversed array. If the array is empty, the returned iterator is equal to rend().
|
inline |
Returns a reverse iterator to the element following the last element of the reversed array.
It corresponds to the element preceding the first element of the non-reversed array. This element acts as a placeholder, attempting to access it results in undefined behavior.
|
inline |
Number of elements in the container.
|
inline |
Number of elements in the container as signed value.
|
inline |
Same as size().
|
inline |
|
inline |
|
inline |
|
inline |
Tests whether at least one element in the array passes the test implemented by the provided function test.
|
inline |
Tests whether all elements in the array passes the test implemented by the provided function test.
|
inline |
|
inline |
Read only access to element by index.
Element index starts from 0. Element index must be in range from 0 to size()-1. Otherwise will be undefined behavior.
|
inline |
Returns the first element of the array that passes the test implemented by the provided function test or def if there is no such element.
|
inline |
Returns the last element of the array that passes the test implemented by the provided function test or def if there is no such element.
|
inline |
Last element.
Returns a reference to the last item in the array. This function assumes that the array isn't empty. Otherwise will be undefined behavior.
|
inline |
Last element.
Returns a reference to the last item in the array. This function assumes that the array isn't empty. Otherwise will be undefined behavior.
|
inline |
Tests if element e exists in the array.
Optional argument start - the position in this array at which to begin searching. If the index is greater than or equal to the array's size, false is returned, which means the array will not be searched. If the provided index value is a negative number, it is taken as the offset from the end of the array. Note: if the provided index is negative, the array is still searched from front to back. Default: 0 (entire array is searched).
e, otherwise it returns false.
|
inline |
Count elements equal e in the array.
Optional argument start - the position in this array at which to begin searching. If the index is greater than or equal to the array's size, 0 is returned, which means the array will not be searched. If the provided index value is a negative number, it is taken as the offset from the end of the array. Note: if the provided index is negative, the array is still searched from front to back. Default: 0 (entire array is searched).
|
inline |
Count elements in the array passes the test implemented by the provided function test.
Overloaded function. Optional argument start - the position in this array at which to begin searching. If the index is greater than or equal to the array's size, 0 is returned, which means the array will not be searched. If the provided index value is a negative number, it is taken as the offset from the end of the array. Note: if the provided index is negative, the array is still searched from front to back. Default: 0 (entire array is searched).
|
inline |
Returns the first index at which a given element e can be found in the array, or -1 if it is not present.
Optional argument start - the position in this array at which to begin searching. If the index is greater than or equal to the array's size, -1 is returned, which means the array will not be searched. If the provided index value is a negative number, it is taken as the offset from the end of the array. Note: if the provided index is negative, the array is still searched from front to back. Default: 0 (entire array is searched).
|
inline |
Returns the first index passes the test implemented by the provided function test, or -1 if it is not present. can be found in the array, or -1 if it is not present.
Optional argument start - the position in this array at which to begin searching. If the index is greater than or equal to the array's size, -1 is returned, which means the array will not be searched. If the provided index value is a negative number, it is taken as the offset from the end of the array. Note: if the provided index is negative, the array is still searched from front to back. Default: 0 (entire array is searched).
|
inline |
Returns the last index at which a given element e can be found in the array, or -1 if it is not present.
Optional argument start - the position in this array at which to start searching backwards. If the index is greater than or equal to the array's size, causes the whole array to be searched. If the provided index value is a negative number, it is taken as the offset from the end of the array. Therefore, if calculated index less than 0, the array is not searched, and the method returns -1. Note: if the provided index is negative, the array is still searched from back to front. Default: -1 (entire array is searched).
|
inline |
Returns the last index passes the test implemented by the provided function test, or -1 if it is not present.
Optional argument start - the position in this array at which to start searching backwards. If the index is greater than or equal to the array's size, causes the whole array to be searched. If the provided index value is a negative number, it is taken as the offset from the end of the array. Therefore, if calculated index less than 0, the array is not searched, and the method returns -1. Note: if the provided index is negative, the array is still searched from back to front. Default: -1 (entire array is searched).
|
inline |
Pointer to array.
Optional argument index the position in this array, where is pointer. Default: start of array.
|
inline |
Read only pointer to array.
The pointer can be used to access and modify the items in the array. The pointer remains valid as long as the array isn't reallocated. Optional argument index the position in this array, where is pointer. Default: start of array.
|
inline |
Creates sub-array of this array.
| index | - index of this array where sub-array starts |
| count | - sub-array size |
Index must be in range from 0 to size()-1. If sub-array size more than this array size, than ends early.
Assigns element 'e' to all items in the array.
Assigns result of function 'f(size_t i)' to all items in the array.
|
inline |
Attempts to allocate memory for at least new_size elements.
If you know in advance how large the array will be, you should call this function to prevent reallocations and memory fragmentation. If new_size is greater than the current capacity(), new storage is allocated, otherwise the function does nothing. This function does not change the size() of the array.
|
inline |
Inserts the given elements at index position in the array.
The index must be greater than or equal to 0 and less than or equal to size(). Inserts the given elements from C++11 initializer list.
|
inline |
Removes count elements from the middle of the array, starting at index position.
Swaps array v other with this array.
This operation is very fast and never fails.
Sorts the elements in non-descending order.
The order of equal elements is not guaranteed to be preserved. Elements are compared using operator<. Sorting provided by std::stable_sort. Complexity O(N·log(N)).
|
inline |
Sorts the elements in non-descending order.
The order of equal elements is not guaranteed to be preserved. Elements are compared using the given binary comparison function comp. which returns true if the first argument is less than (i.e. is ordered before) the second. The signature of the comparison function should be equivalent to the following:
While the signature does not need to have const &, the function must not modify the objects passed to it. The function must return false for identical elements, otherwise, it will lead to undefined program behavior and memory errors. Sorting provided by std::stable_sort. Complexity O(N·log(N)).
Reverses this array.
This method reverses an array in place. The first array element becomes the last, and the last array element becomes the first. The reverse method transposes the elements of the calling array object in place, mutating the array, and returning a reference to the array.
Returns reversed array.
Returns a copy of the array with elements in reverse order. The first array element becomes the last, and the last array element becomes the first.
|
inline |
Increases or decreases the size of the array by add_size elements.
If add_size > 0 then elements are added to the end of the array. If add_size < 0 then elements are removed from the end of the array. If add_size < 0 and there are fewer elements in the array than specified, then the array becomes empty.
Remove no more than one element equal e.
Remove all elements equal e.
|
inline |
Remove all elements in the array passes the test implemented by the provided function test.
Appends the given element e to the end of the array.
If size() is less than capacity(), which is most often then the addition will be very fast. In any case, the addition is fast and does not depend on the size of the array. If the new size() is greater than capacity() then all iterators and references (including the past-the-end iterator) are invalidated. Otherwise only the past-the-end iterator is invalidated.
|
inline |
Appends the given elements to the end of the array.
Overloaded function. Appends the given elements from C++11 initializer list.
Appends the given element e to the end of the array.
If size() is less than capacity(), which is most often then the addition will be very fast. In any case, the addition is fast and does not depend on the size of the array. If the new size() is greater than capacity() then all iterators and references (including the past-the-end iterator) are invalidated. Otherwise only the past-the-end iterator is invalidated.
|
inline |
Appends the given elements to the end of the array.
Overloaded function. Appends the given elements from C++11 initializer list.
Appends the given element e to the end of the array.
Appends the given element e to the end of the array.
Appends the given array v to the end of the array.
Appends the given element e to the begin of the array.
Adding an element to the beginning takes longer than to the end. This time is directly proportional to the size of the array. All iterators and references are invalidated.
|
inline |
Appends the given elements to the begin of the array.
Overloaded function. Appends the given elements from C++11 initializer list.
Appends the given element e to the begin of the array.
Adding an element to the beginning takes longer than to the end. This time is directly proportional to the size of the array. All iterators and references are invalidated.
|
inline |
Appends the given elements to the begin of the array.
Overloaded function. Appends the given elements from C++11 initializer list.
Remove one element from the end of the array.
Deleting an element from the end is very fast and does not depend on the size of the array.
Remove one element from the begining of the array.
Removing an element from the beginning takes longer than from the end. This time is directly proportional to the size of the array. All iterators and references are invalidated.
|
inline |
Remove one element from the end of the array and return it.
|
inline |
Remove one element from the begining of the array and return it.
Returns an array converted to another type.
|
inline |
Returns a new array with all elements that pass the test implemented by the provided function bool test(const T & e).
|
inline |
Same as filterReverse() but with index parameter in test.
|
inline |
Execute function void f(const T & e) for every element in array.
Does not allow changing array elements. To edit elements, use the function like void f(T & e)
|
inline |
|
inline |
Same as forEachIndexed(), but allows you to change the elements of the array.
|
inline |
|
inline |
Same as forEachReverse(), but allows you to change the elements of the array.
|
inline |
Same as forEachIndexed() but from end to begin (from right to left).
|
inline |
Same as forEachReverseIndexed(), but allows you to change the elements of the array.
|
inline |
Сreates a new array populated with the results of calling a provided function ST f(const T & e) on every element in the calling array.
Calls a provided functionST f(const T & e) once for each element in an array, in order, and constructs a new array from the results.
|
inline |
Same as map() but with index parameter in f.
|
inline |
Same as map() but from end to begin (from right to left).
|
inline |
Same as mapReverse() but with index parameter in f.
|
inline |
Applies the function ST f(const T & e, const ST & acc) to each element of the array (from left to right), returns one value.
The reduce() method performs the f function once for each element in the array. If the initial argument is passed when calling reduce(), then when the function f is called for the first time, the value of acc will be assigned to initial. If the array is empty, the value initial will be returned.
| f | is a function like ST f(const T & e, const ST & acc), executed for each element of the array. It takes two arguments:
|
| initial | optional Object used as the second argument when the f function is first called. PIVector<int> v{1, 2, 3, 4, 5};
piCout << s; // 15
ST reduce(std::function< ST(const T &e, const ST &acc)> f, const ST &initial=ST()) const Applies the function ST f(const T & e, const ST & acc) to each element of the array (from left to rig... Definition: pivector.h:2233 |
|
inline |
|
inline |
|
inline |
Same as reduceReverse() but with index parameter in f.
|
inline |
Changes the dimension of the array, creates a two-dimensional array from a one-dimensional array.
| rows | size external array |
| cols | size internal arrays |
| order | the order of traversing the source array is set using ReshapeOrder PIVector<int> v{1, 2, 3, 4};
PIVector<PIVector<int>> m1 = v.reshape(2,2);
piCout << m1; // {{1, 2}, {3, 4}}
piCout << m2; // {{1, 3}, {2, 4}}
PIVector< PIVector< T > > reshape(size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const Changes the dimension of the array, creates a two-dimensional array from a one-dimensional array. Definition: pivector.h:2296 |
|
inline |
Changes the dimension of the array, creates a one-dimensional array from a two-dimensional array.
Makes the array flat. Еhe order of traversing the source array is set using ReshapeOrder.
|
inline |
Changes the dimension of the two-dimensional array.
| rows | size external array |
| cols | size internal arrays |
| order | the order of traversing the source array is set using ReshapeOrder PIVector<int> v{1, 2, 3, 4, 5, 6};
PIVector<PIVector<int>> xv = v.reshape(3,2);
piCout << xv; // {{1, 2}, {3, 4}, {5, 6}}
|
|
inline |
Divides an array into a two-dimensional array using the separator separator.
|
inline |
Divides an array into a two-dimensional array in chunks of no more than sz.
Cut sub-array of this array.
| index | - index of this array where sub-array starts |
| count | - sub-array size |
Index must be in range from 0 to size()-1. If sub-array size more than this array size, than ends early.