FLImaging 6.5.8.1
FLArray.h
1#pragma once
2
11#include "FLBase.h"
12
13#include <vector>
14
16namespace FLImaging
17{
19 namespace Base
20 {
51 template <typename T>
52 class FL_EXPORT CFLArray : public Base::CFLBase
53 {
54 SupportToDuplicateObject(CFLArray<T>,*this);
55 public:
64
74 CFLArray(const CFLArray<T>& flArray);
75
85 CFLArray(const CFLArray<T>* pFlArray);
86
98 CFLArray(int64_t i64Count, const T& tValue);
99
111 CFLArray(const T* pArrData, int64_t i64Count);
112
113
121 virtual ~CFLArray();
122
130 virtual void Clear();
131
141 virtual bool IsEmpty() const;
142
152 virtual int64_t GetCount() const;
153
165 virtual T& GetAt(int64_t i64Index) const;
166
178 virtual void SetAt(int64_t i64Index, const T& tValue);
179
189 virtual T& Front() const;
190
200 virtual T& Back() const;
201
211 virtual T* GetBuffer() const;
212
224 virtual T* PushBack(const CFLArray<T>& flArray);
225
239 virtual T* PushBack(const T* pArrData, int64_t i64Count);
240
252 virtual T* PushBack(const T& tValue);
253
265 virtual T* PushFront(const CFLArray<T>& flArray);
266
280 virtual T* PushFront(const T* pArrData, int64_t i64Count);
281
293 virtual T* PushFront(const T& tValue);
294
302 virtual void PopBack();
303
311 virtual void PopFront();
312
324 virtual T* Append(const CFLArray<T>& flArray);
325
339 virtual T* Append(const T* pArrData, int64_t i64Count);
340
352 virtual T* Append(const T& tValue);
353
367 virtual T* InsertAt(int64_t i64Index, const CFLArray<T>& flArray);
368
384 virtual T* InsertAt(int64_t i64Index, const T* pArrData, int64_t i64Count);
385
399 virtual T* InsertAt(int64_t i64Index, const T& tValue);
400
410 virtual void RemoveAt(int64_t i64Index);
411
421 virtual void Reserve(int64_t i64Size);
422
434 virtual T* Resize(int64_t i64Size);
435
443 virtual void ShrinkToFit();
444
460 virtual void Reverse(int64_t i64BeginIndex = 0, int64_t i64EndIndex = -1);
461
479 void Sort(int64_t i64BeginIndex, int64_t i64EndIndex, bool(*pFnComparator)(const T&, const T&));
480
492 virtual const CFLArray<T>& Assign(const CFLArray<T>& flArray);
493
505 virtual const CFLArray<T>& Assign(const CFLArray<T>* pFlArray);
506
518 const CFLArray<T>& Assign(const T& tValue);
519
533 const CFLArray<T>& Assign(int64_t i64Count, const T& tValue);
534
548 const CFLArray<T>& Assign(const T* pArrData, int64_t i64Count);
549
559 void Swap(CFLArray<T>& flaArray);
560
570 void Swap(CFLArray<T>* pFlaArray);
571
583 const CFLArray<T>& operator=(const CFLArray<T>& flArray);
584
596 const CFLArray<T>& operator=(const T& tValue);
597
609 T& operator[](int32_t i32Index) const;
610
622 T& operator[](int64_t i64Index) const;
623
635 T& operator[](uint32_t u32Index) const;
636
648 T& operator[](uint64_t u64Index) const;
649
661 const CFLArray<T>& operator+=(const CFLArray<T>& flArray);
662
674 const CFLArray<T>& operator+=(const T& tValue);
675
689 friend CFLArray<T> operator+(const CFLArray<T>& flArray1, const CFLArray<T>& flArray2)
690 {
691 CFLArray<T> flArray(flArray1);
692 flArray.Append(flArray2);
693 return flArray;
694 }
695
709 friend CFLArray<T> operator+(const CFLArray<T>& flArray1, const T& tValue2)
710 {
711 CFLArray<T> flArray(flArray1);
712 flArray.Append(tValue2);
713 return flArray;
714 }
715
729 friend CFLArray<T> operator+(const T& tValue1, const CFLArray<T>& flArray2)
730 {
731 CFLArray<T> flArray(1, tValue1);
732 flArray.Append(flArray2);
733 return flArray;
734 }
735
736 DeclareGetClassType();
737
738 protected:
739
740 const T* m_pTData;
741 size_t m_stCount;
742
743 std::vector<T>& m_vctArray;
744 DeclareFLArrayContainerObject;
745 };
746
747 typedef CFLArray<int32_t> CFLArrayL;
748 typedef CFLArray<uint32_t> CFLArrayUL;
749 typedef CFLArray<int64_t> CFLArrayLL;
750 typedef CFLArray<uint64_t> CFLArrayULL;
751 typedef CFLArray<float> CFLArrayF;
752 typedef CFLArray<double> CFLArrayD;
753 }
754}
755
Template type 의 배열 클래스.
Definition RangeTree.h:19
T & operator[](int64_t i64Index) const
첨자 연산자
virtual void RemoveAt(int64_t i64Index)
해당 인덱스의 원소를 제거
CFLArray(const CFLArray< T > *pFlArray)
복사 생성자 (포인터) 복사를 수행한다.
virtual T * Append(const T &tValue)
맨 뒤에 원소를 추가
CFLArray(int64_t i64Count, const T &tValue)
생성자
virtual void ShrinkToFit()
Array 의 불필요한 메모리를 정리
virtual T * Append(const CFLArray< T > &flArray)
맨 뒤에 원소들을 추가
T & operator[](uint32_t u32Index) const
첨자 연산자
virtual T * PushFront(const T &tValue)
맨 앞에 원소를 삽입
virtual T * PushFront(const CFLArray< T > &flArray)
맨 앞에 원소들을 삽입
virtual T * PushFront(const T *pArrData, int64_t i64Count)
맨 앞에 원소들을 삽입
virtual T * InsertAt(int64_t i64Index, const CFLArray< T > &flArray)
해당 인덱스에 원소들을 삽입
void Swap(CFLArray< T > *pFlaArray)
배열의 내용을 서로 바꿉니다.
T & operator[](int32_t i32Index) const
첨자 연산자
virtual T & Front() const
맨 앞의 값을 얻음
virtual int64_t GetCount() const
원소의 개수
virtual bool IsEmpty() const
원소가 비어있는지 여부
virtual void PopBack()
맨 뒤의 원소를 제거
void Swap(CFLArray< T > &flaArray)
배열의 내용을 서로 바꿉니다.
virtual void Reserve(int64_t i64Size)
Array 의 메모리를 미리 할당
const CFLArray< T > & Assign(const T &tValue)
스칼라 값 하나를 할당합니다.
virtual T * PushBack(const CFLArray< T > &flArray)
맨 뒤에 원소들을 삽입
virtual T * PushBack(const T &tValue)
맨 뒤에 원소를 삽입
virtual ~CFLArray()
소멸자
virtual T * PushBack(const T *pArrData, int64_t i64Count)
맨 뒤에 원소들을 삽입
virtual T * InsertAt(int64_t i64Index, const T &tValue)
해당 인덱스에 원소를 삽입
virtual T * GetBuffer() const
데이터의 포인터를 얻음
virtual void Reverse(int64_t i64BeginIndex=0, int64_t i64EndIndex=-1)
지정된 시작 인덱스 부터 종료 인덱스 범위의 데이터를 뒤집는다. -1 지정 시 배열의 마지막 인덱스를 의미합니다. 종료 인덱스는 원하는 인덱스의 +1을 해주어야 합니다....
CFLArray(const CFLArray< T > &flArray)
복사 생성자 (참조) 복사를 수행한다.
virtual const CFLArray< T > & Assign(const CFLArray< T > *pFlArray)
객체를 할당합니다.
const CFLArray< T > & operator+=(const T &tValue)
덧셈 대입 연산자
friend CFLArray< T > operator+(const CFLArray< T > &flArray1, const T &tValue2)
덧셈 연산자
Definition FLArray.h:709
virtual T * Append(const T *pArrData, int64_t i64Count)
맨 뒤에 원소를 추가
CFLArray()
기본 생성자
virtual T & Back() const
맨 뒤의 값을 얻음
virtual T * InsertAt(int64_t i64Index, const T *pArrData, int64_t i64Count)
해당 인덱스에 원소들을 삽입
virtual const CFLArray< T > & Assign(const CFLArray< T > &flArray)
객체를 할당합니다.
virtual void Clear()
모든 원소를 제거
const CFLArray< T > & Assign(int64_t i64Count, const T &tValue)
스칼라 값을 개수만큼 채워서 할당합니다.
const CFLArray< T > & operator=(const CFLArray< T > &flArray)
대입 연산자
virtual void SetAt(int64_t i64Index, const T &tValue)
해당 인덱스의 값을 설정
friend CFLArray< T > operator+(const CFLArray< T > &flArray1, const CFLArray< T > &flArray2)
덧셈 연산자
Definition FLArray.h:689
const CFLArray< T > & operator=(const T &tValue)
대입 연산자
virtual T * Resize(int64_t i64Size)
Array 의 크기 조정
virtual T & GetAt(int64_t i64Index) const
해당 인덱스의 값을 얻음
friend CFLArray< T > operator+(const T &tValue1, const CFLArray< T > &flArray2)
덧셈 연산자
Definition FLArray.h:729
virtual void PopFront()
맨 앞의 원소를 제거
const CFLArray< T > & operator+=(const CFLArray< T > &flArray)
덧셈 대입 연산자
T & operator[](uint64_t u64Index) const
첨자 연산자
const CFLArray< T > & Assign(const T *pArrData, int64_t i64Count)
생성자. 메모리 상의 데이터를 개수만큼 할당.
CFLArray(const T *pArrData, int64_t i64Count)
생성자. 메모리 상의 데이터를 개수만큼 할당.
void Sort(int64_t i64BeginIndex, int64_t i64EndIndex, bool(*pFnComparator)(const T &, const T &))
지정된 시작 인덱스 부터 종료 인덱스 범위의 데이터를 정렬한다. -1 지정 시 배열의 마지막 인덱스를 의미합니다. 종료 인덱스는 원하는 인덱스의 +1을 해주어야 합니다....