From e63ce573ff6fe3d3ec9095c8c836b51ecc84ceb7 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Fri, 3 Jun 2022 23:29:43 +0300 Subject: [PATCH] Autoarr2 search --- src/Autoarr2/Autoarr2.hpp | 40 ++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/src/Autoarr2/Autoarr2.hpp b/src/Autoarr2/Autoarr2.hpp index ede99ed..67d307e 100644 --- a/src/Autoarr2/Autoarr2.hpp +++ b/src/Autoarr2/Autoarr2.hpp @@ -2,21 +2,30 @@ #include "../base/base.h" +#define Autoarr2_NO_REZULT -1 + template class Autoarr2 { T** values; + public: uint16 blocks_count; uint16 block_length; uint16 max_block_length; uint32 length; + Autoarr2(); explicit Autoarr2(uint16 _max_block_length); + virtual ~Autoarr2(); + T* getptr(uint32 index); T get(uint32 index); void set(uint32 index, T value); void add(T value); - virtual ~Autoarr2(); + // returns index of the first inclusion + uint32 search(T& value); + uint32 search(T& value, uint32 fromIndex); + uint32 search(T& value, uint32 fromIndex, uint32 toIndex); }; @@ -36,6 +45,14 @@ Autoarr2::Autoarr2(uint16 _max_block_length) : Autoarr2() { max_block_length=_max_block_length; } +template +Autoarr2::~Autoarr2() { + for (uint16 i=0;i T *Autoarr2::getptr(uint32 index) { if(index>=length) throw_id(ERR_WRONGINDEX); @@ -76,9 +93,22 @@ create_block: length++; } + template -Autoarr2::~Autoarr2() { - for (uint16 i=0;i::search(T& value, uint32 fromIndex, uint32 toIndex){ + uint32 index=fromIndex; + for(; index +uint32 Autoarr2::search(T& value, uint32 fromIndex){ + return search(value, fromIndex, length); +} + +template +uint32 Autoarr2::search(T& value){ + return search(value, 0, length); }