Autoarr2 search
This commit is contained in:
parent
d525270443
commit
e63ce573ff
@ -2,21 +2,30 @@
|
|||||||
|
|
||||||
#include "../base/base.h"
|
#include "../base/base.h"
|
||||||
|
|
||||||
|
#define Autoarr2_NO_REZULT -1
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class Autoarr2 {
|
class Autoarr2 {
|
||||||
T** values;
|
T** values;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
uint16 blocks_count;
|
uint16 blocks_count;
|
||||||
uint16 block_length;
|
uint16 block_length;
|
||||||
uint16 max_block_length;
|
uint16 max_block_length;
|
||||||
uint32 length;
|
uint32 length;
|
||||||
|
|
||||||
Autoarr2();
|
Autoarr2();
|
||||||
explicit Autoarr2(uint16 _max_block_length);
|
explicit Autoarr2(uint16 _max_block_length);
|
||||||
|
virtual ~Autoarr2();
|
||||||
|
|
||||||
T* getptr(uint32 index);
|
T* getptr(uint32 index);
|
||||||
T get(uint32 index);
|
T get(uint32 index);
|
||||||
void set(uint32 index, T value);
|
void set(uint32 index, T value);
|
||||||
void add(T value);
|
void add(T value);
|
||||||
virtual ~Autoarr2();
|
// returns index of the first <value> inclusion
|
||||||
|
uint32 search(T& value);
|
||||||
|
uint32 search(T& value, uint32 fromIndex);
|
||||||
|
uint32 search(T& value, uint32 fromIndex, uint32 toIndex);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -36,6 +45,14 @@ Autoarr2<T>::Autoarr2(uint16 _max_block_length) : Autoarr2() {
|
|||||||
max_block_length=_max_block_length;
|
max_block_length=_max_block_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
Autoarr2<T>::~Autoarr2() {
|
||||||
|
for (uint16 i=0;i<blocks_count;i++)
|
||||||
|
delete[] values[i];
|
||||||
|
delete[] values;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
T *Autoarr2<T>::getptr(uint32 index) {
|
T *Autoarr2<T>::getptr(uint32 index) {
|
||||||
if(index>=length) throw_id(ERR_WRONGINDEX);
|
if(index>=length) throw_id(ERR_WRONGINDEX);
|
||||||
@ -76,9 +93,22 @@ create_block:
|
|||||||
length++;
|
length++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
Autoarr2<T>::~Autoarr2() {
|
uint32 Autoarr2<T>::search(T& value, uint32 fromIndex, uint32 toIndex){
|
||||||
for (uint16 i=0;i<blocks_count;i++)
|
uint32 index=fromIndex;
|
||||||
delete[] values[i];
|
for(; index<toIndex; index++)
|
||||||
delete[] values;
|
if(value==get(index))
|
||||||
|
return index;
|
||||||
|
return Autoarr2_NO_REZULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
uint32 Autoarr2<T>::search(T& value, uint32 fromIndex){
|
||||||
|
return search(value, fromIndex, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
uint32 Autoarr2<T>::search(T& value){
|
||||||
|
return search(value, 0, length);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user