Go to the documentation of this file.
52 #ifndef __PCL_SortedArray_h
53 #define __PCL_SortedArray_h
58 #include <pcl/Diagnostics.h>
81 template <
class T,
class A = StandardAllocator>
157 template <
typename T1>
186 return m_array.IsUnique();
196 return m_array.IsAliasOf( x.m_array );
208 m_array.EnsureUnique();
217 return m_array.Size();
225 return m_array.Length();
232 return m_array.Capacity();
239 return m_array.Available();
246 return m_array.IsValid();
253 return m_array.IsEmpty();
260 return m_array.LowerBound();
267 return m_array.UpperBound();
274 return m_array.Allocator();
281 m_array.SetAllocator( a );
288 return m_array.At( i );
295 return m_array.At( i );
302 return m_array.MutableIterator( i );
323 return m_array.ConstBegin();
330 return m_array.Begin();
337 return m_array.ConstEnd();
344 return m_array.End();
351 return m_array.ConstReverseBegin();
358 return m_array.ReverseBegin();
365 return m_array.ConstReverseEnd();
372 return m_array.ReverseEnd();
385 return m_array.UniquifyIterator( i );
399 return m_array.UniquifyIterators( i, j );
402 #ifndef __PCL_NO_STL_COMPATIBLE_ITERATORS
418 #endif // !__PCL_NO_STL_COMPATIBLE_ITERATORS
436 m_array.Assign( x.m_array );
452 m_array.Transfer( x.m_array );
459 m_array.Transfer( x.m_array );
490 m_array.Transfer( x );
498 m_array.Transfer( x );
506 m_array.Assign( v, n );
514 m_array.Assign( i, j );
522 m_array.Import( i, j );
530 return m_array.Release();
538 for (
iterator i = m_array.Begin(); i < m_array.End() && p < q; ++i )
540 i = m_array.Insert( i, *p++ );
542 m_array.Append( p, q );
566 m_array.EnsureUnique();
567 for (
iterator l = m_array.Begin(), r = m_array.End(); ; )
593 m_array.Remove(
const_cast<iterator>( i ), n );
615 m_array.Truncate(
const_cast<iterator>( i ) );
652 m_array.Reserve( n );
707 return m_array.Count( v, p );
715 return m_array.CountIf( p );
737 return IsEmpty() ? End() : End()-1;
760 return m_array.Search( v, p );
775 return m_array.SearchLast( v, p );
782 return Search( v ) != End();
790 return Search( v, p ) != End();
814 return x1.m_array == x2.m_array;
823 return x1.m_array == x2;
832 return x1 == x2.m_array;
842 return x1.m_array < x2.m_array;
851 return x1.m_array < x2;
860 return x1 < x2.m_array;
879 template <
class S,
typename SP>
880 S& ToSeparated( S& s, SP separator )
const
882 return m_array.ToSeparated( s, separator );
907 template <
class S,
typename SP,
class AF>
908 S& ToSeparated( S& s, SP separator, AF append )
const
910 return m_array.ToSeparated( s, separator, append );
922 S& ToCommaSeparated( S& s )
const
924 return m_array.ToCommaSeparated( s );
936 S& ToSpaceSeparated( S& s )
const
938 return m_array.ToSpaceSeparated( s );
950 S& ToTabSeparated( S& s )
const
952 return m_array.ToTabSeparated( s );
964 S& ToNewLineSeparated( S& s )
const
966 return m_array.ToNewLineSeparated( s );
979 return m_array.Hash64( seed );
992 return m_array.Hash32( seed );
1008 array_implementation m_array;
1021 template <
class T,
class A,
class V>
inline
1036 template <
class T,
class A,
class V>
inline
1048 template <
class T,
class A>
inline
1060 template <
class T,
class A>
inline
1072 template <
class T,
class A>
inline
1084 template <
class T,
class A>
inline
1095 #endif // __PCL_SortedArray_h
iterator MutableAt(size_type i)
size_type UpperBound() const
void Assign(const SortedArray &x)
size_type Available() const
const_iterator End() const
const_reverse_iterator ReverseBegin() const
size_type Capacity() const
const_iterator begin() const
size_type CountIf(UP p) const
BI LastThat(BI i, BI j, UP p) noexcept(noexcept(p))
void Add(const Array< T, A > &x)
void Transfer(array_implementation &x)
const Node * * const_iterator
void Assign(const array_implementation &x)
FI InsertionPoint(FI i, FI j, const T &v) noexcept
bool operator==(const Array< T, A > &x1, const Array< T, A > &x2) noexcept
uint64 Hash64(const void *data, size_type size, uint64 seed=0) noexcept
bool Contains(const T &v) const
reverse_iterator MutableReverseEnd()
void Reserve(size_type n)
void Import(iterator i, iterator j)
FI BinarySearchLast(FI i, FI j, const T &v) noexcept
uint64 Hash64(uint64 seed=0) const
const_iterator end() const
FI MinItem(FI i, FI j) noexcept
void Truncate(const_iterator i)
friend void Swap(SortedArray &x1, SortedArray &x2)
size_type Count(const T &v) const
reverse_iterator MutableReverseBegin()
SortedArray(size_type n, const T &v)
FI1 Search(FI1 i1, FI1 j1, FI2 i2, FI2 j2) noexcept
void Apply(FI i, FI j, F f) noexcept(noexcept(f))
Array< T, A > & operator<<(Array< T, A > &x, const V &v)
unsigned long long uint64
void Remove(const_iterator i, const_iterator j)
void Shrink(size_type n=1)
void Transfer(SortedArray &x)
const_iterator Search(const T &v) const
const_reverse_iterator ReverseEnd() const
bool Contains(const T &v, BP p) const
const_iterator MaxItem() const
void UniquifyIterator(iterator &i)
const_iterator MinItem() const
FI FirstThat(FI i, FI j, UP p) noexcept(noexcept(p))
const_iterator MaxItem(BP p) const
FI MaxItem(FI i, FI j) noexcept
Root base class of all PCL sorted containers of objects.
const allocator & Allocator() const
A block allocator class that uses the standard new and delete operators.
uint64 Hash(uint64 seed=0) const
typename array_implementation::allocator allocator
const_iterator Begin() const
const_iterator FirstThat(F f) const
void Swap(GenericPoint< T > &p1, GenericPoint< T > &p2) noexcept
typename array_implementation::reverse_iterator reverse_iterator
void Add(const SortedArray &x)
void Transfer(SortedArray &&x)
bool IsAliasOf(const SortedArray &x) const
void UniquifyIterators(iterator &i, iterator &j)
const_iterator Search(const T &v, BP p) const
SortedArray(std::initializer_list< T1 > l)
Complex< T1 > operator*(const Complex< T1 > &c1, const Complex< T2 > &c2) noexcept
typename array_implementation::const_reverse_iterator const_reverse_iterator
FI BinarySearch(FI i, FI j, const T &v) noexcept
typename array_implementation::iterator iterator
uint32 Hash32(uint32 seed=0) const
const_iterator SearchLast(const T &v) const
size_type Count(const T &v, BP p) const
void Remove(const_iterator i, size_type n=1)
const_iterator MinItem(BP p) const
size_type LowerBound() const
Generic dynamic sorted array.
iterator MutableIterator(const_iterator i)
const_iterator LastThat(F f) const
void Transfer(array_implementation &&x)
Provides memory allocation for PCL containers.
const_iterator SearchLast(const T &v, BP p) const
void SetAllocator(const allocator &a)
typename array_implementation::block_allocator block_allocator
const_iterator At(size_type i) const
typename array_implementation::const_iterator const_iterator
Reverse random access iterator.
void Assign(const T &v, size_type n=1)
bool operator<(const Array< T, A > &x1, const Array< T, A > &x2) noexcept
const_iterator Add(const T &v, size_type n=1)