PCL
SortedArray.h
Go to the documentation of this file.
1 // ____ ______ __
2 // / __ \ / ____// /
3 // / /_/ // / / /
4 // / ____// /___ / /___ PixInsight Class Library
5 // /_/ \____//_____/ PCL 2.6.5
6 // ----------------------------------------------------------------------------
7 // pcl/SortedArray.h - Released 2024-01-13T15:47:58Z
8 // ----------------------------------------------------------------------------
9 // This file is part of the PixInsight Class Library (PCL).
10 // PCL is a multiplatform C++ framework for development of PixInsight modules.
11 //
12 // Copyright (c) 2003-2024 Pleiades Astrophoto S.L. All Rights Reserved.
13 //
14 // Redistribution and use in both source and binary forms, with or without
15 // modification, is permitted provided that the following conditions are met:
16 //
17 // 1. All redistributions of source code must retain the above copyright
18 // notice, this list of conditions and the following disclaimer.
19 //
20 // 2. All redistributions in binary form must reproduce the above copyright
21 // notice, this list of conditions and the following disclaimer in the
22 // documentation and/or other materials provided with the distribution.
23 //
24 // 3. Neither the names "PixInsight" and "Pleiades Astrophoto", nor the names
25 // of their contributors, may be used to endorse or promote products derived
26 // from this software without specific prior written permission. For written
27 // permission, please contact info@pixinsight.com.
28 //
29 // 4. All products derived from this software, in any form whatsoever, must
30 // reproduce the following acknowledgment in the end-user documentation
31 // and/or other materials provided with the product:
32 //
33 // "This product is based on software from the PixInsight project, developed
34 // by Pleiades Astrophoto and its contributors (https://pixinsight.com/)."
35 //
36 // Alternatively, if that is where third-party acknowledgments normally
37 // appear, this acknowledgment must be reproduced in the product itself.
38 //
39 // THIS SOFTWARE IS PROVIDED BY PLEIADES ASTROPHOTO AND ITS CONTRIBUTORS
40 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
41 // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PLEIADES ASTROPHOTO OR ITS
43 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
44 // EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, BUSINESS
45 // INTERRUPTION; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; AND LOSS OF USE,
46 // DATA OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49 // POSSIBILITY OF SUCH DAMAGE.
50 // ----------------------------------------------------------------------------
51 
52 #ifndef __PCL_SortedArray_h
53 #define __PCL_SortedArray_h
54 
56 
57 #include <pcl/Defs.h>
58 #include <pcl/Diagnostics.h>
59 
60 #include <pcl/Array.h>
61 
62 namespace pcl
63 {
64 
65 // ----------------------------------------------------------------------------
66 
81 template <class T, class A = StandardAllocator>
82 class PCL_CLASS SortedArray : public DirectSortedContainer<T>
83 {
84 public:
85 
89 
93 
97 
101 
105 
109 
113 
114  // -------------------------------------------------------------------------
115 
119  SortedArray() = default;
120 
124  explicit
126  : m_array( n )
127  {
128  }
129 
133  SortedArray( size_type n, const T& v )
134  : m_array( n, v )
135  {
136  }
137 
142  template <class FI>
143  SortedArray( FI i, FI j )
144  : m_array( i, j )
145  {
146  Sort();
147  }
148 
157  template <typename T1>
158  SortedArray( std::initializer_list<T1> l )
159  : SortedArray( l.begin(), l.end() )
160  {
161  }
162 
166  SortedArray( const SortedArray& ) = default;
167 
171  SortedArray( SortedArray&& ) = default;
172 
178  {
179  }
180 
184  bool IsUnique() const
185  {
186  return m_array.IsUnique();
187  }
188 
194  bool IsAliasOf( const SortedArray& x ) const
195  {
196  return m_array.IsAliasOf( x.m_array );
197  }
198 
207  {
208  m_array.EnsureUnique();
209  }
210 
215  size_type Size() const
216  {
217  return m_array.Size();
218  }
219 
224  {
225  return m_array.Length();
226  }
227 
231  {
232  return m_array.Capacity();
233  }
234 
238  {
239  return m_array.Available();
240  }
241 
244  bool IsValid() const
245  {
246  return m_array.IsValid();
247  }
248 
251  bool IsEmpty() const
252  {
253  return m_array.IsEmpty();
254  }
255 
259  {
260  return m_array.LowerBound();
261  }
262 
266  {
267  return m_array.UpperBound();
268  }
269 
272  const allocator& Allocator() const
273  {
274  return m_array.Allocator();
275  }
276 
279  void SetAllocator( const allocator& a )
280  {
281  m_array.SetAllocator( a );
282  }
283 
287  {
288  return m_array.At( i );
289  }
290 
294  {
295  return m_array.At( i );
296  }
297 
301  {
302  return m_array.MutableIterator( i );
303  }
304 
307  const T& operator []( size_type i ) const
308  {
309  return m_array[i];
310  }
311 
314  const T& operator *() const
315  {
316  return *Begin();
317  }
318 
322  {
323  return m_array.ConstBegin();
324  }
325 
329  {
330  return m_array.Begin();
331  }
332 
336  {
337  return m_array.ConstEnd();
338  }
339 
343  {
344  return m_array.End();
345  }
346 
350  {
351  return m_array.ConstReverseBegin();
352  }
353 
357  {
358  return m_array.ReverseBegin();
359  }
360 
364  {
365  return m_array.ConstReverseEnd();
366  }
367 
371  {
372  return m_array.ReverseEnd();
373  }
374 
384  {
385  return m_array.UniquifyIterator( i );
386  }
387 
398  {
399  return m_array.UniquifyIterators( i, j );
400  }
401 
402 #ifndef __PCL_NO_STL_COMPATIBLE_ITERATORS
403 
407  {
408  return Begin();
409  }
410 
415  {
416  return End();
417  }
418 #endif // !__PCL_NO_STL_COMPATIBLE_ITERATORS
419 
426  SortedArray& operator =( const SortedArray& x )
427  {
428  Assign( x );
429  return *this;
430  }
431 
434  void Assign( const SortedArray& x )
435  {
436  m_array.Assign( x.m_array );
437  }
438 
442  SortedArray& operator =( SortedArray&& x )
443  {
444  Transfer( x );
445  return *this;
446  }
447 
451  {
452  m_array.Transfer( x.m_array );
453  }
454 
457  void Transfer( SortedArray&& x )
458  {
459  m_array.Transfer( x.m_array );
460  }
461 
464  SortedArray& operator =( const array_implementation& x )
465  {
466  Assign( x );
467  return *this;
468  }
469 
472  void Assign( const array_implementation& x )
473  {
474  m_array.Assign( x );
475  Sort();
476  }
477 
481  {
482  Transfer( x );
483  return *this;
484  }
485 
489  {
490  m_array.Transfer( x );
491  Sort();
492  }
493 
497  {
498  m_array.Transfer( x );
499  Sort();
500  }
501 
504  void Assign( const T& v, size_type n = 1 )
505  {
506  m_array.Assign( v, n );
507  }
508 
511  template <class FI>
512  void Assign( FI i, FI j )
513  {
514  m_array.Assign( i, j );
515  Sort();
516  }
517 
520  void Import( iterator i, iterator j )
521  {
522  m_array.Import( i, j );
523  Sort();
524  }
525 
529  {
530  return m_array.Release();
531  }
532 
535  void Add( const SortedArray& x )
536  {
537  const_iterator p = x.Begin(), q = x.End();
538  for ( iterator i = m_array.Begin(); i < m_array.End() && p < q; ++i )
539  if ( *p < *i )
540  i = m_array.Insert( i, *p++ );
541  if ( p < q )
542  m_array.Append( p, q );
543  }
544 
547  void Add( const Array<T,A>& x )
548  {
549  Add( x.Begin(), x.End() );
550  }
551 
554  const_iterator Add( const T& v, size_type n = 1 )
555  {
556  return m_array.Insert( pcl::InsertionPoint( m_array.Begin(), m_array.End(), v ), v, n );
557  }
558 
561  template <class FI>
562  void Add( FI i, FI j )
563  {
564  if ( i != j )
565  {
566  m_array.EnsureUnique();
567  for ( iterator l = m_array.Begin(), r = m_array.End(); ; )
568  {
569  FI h = i;
570  iterator m = m_array.Insert( pcl::InsertionPoint( l, r, *i ), *i );
571 
572  if ( ++i == j )
573  break;
574 
575  if ( *i < *h )
576  {
577  l = m_array.Begin();
578  r = m;
579  }
580  else
581  {
582  l = m + 1;
583  r = m_array.End();
584  }
585  }
586  }
587  }
588 
591  void Remove( const_iterator i, size_type n = 1 )
592  {
593  m_array.Remove( const_cast<iterator>( i ), n );
594  }
595 
599  {
600  m_array.Remove( const_cast<iterator>( i ), const_cast<iterator>( j ) );
601  }
602 
614  {
615  m_array.Truncate( const_cast<iterator>( i ) );
616  }
617 
627  void Shrink( size_type n = 1 )
628  {
629  m_array.Shrink( n );
630  }
631 
634  void Remove( const T& v )
635  {
636  const_iterator i = pcl::BinarySearch( Begin(), End(), v );
637  if ( i != End() )
638  Remove( i, pcl::InsertionPoint( i+1, End(), v ) );
639  }
640 
643  void Clear()
644  {
645  m_array.Clear();
646  }
647 
650  void Reserve( size_type n )
651  {
652  m_array.Reserve( n );
653  }
654 
657  void Squeeze()
658  {
659  m_array.Squeeze();
660  }
661 
665  void Fill( const T& v )
666  {
667  m_array.Fill( v );
668  }
669 
672  template <class F>
673  void Apply( F f ) const
674  {
675  pcl::Apply( Begin(), End(), f );
676  }
677 
680  template <class F>
682  {
683  return pcl::FirstThat( Begin(), End(), f );
684  }
685 
688  template <class F>
690  {
691  return pcl::LastThat( Begin(), End(), f );
692  }
693 
696  size_type Count( const T& v ) const
697  {
698  const_iterator i = pcl::BinarySearch( Begin(), End(), v );
699  return (i != End()) ? pcl::InsertionPoint( i+1, End(), v ) - i : 0;
700  }
701 
704  template <class BP>
705  size_type Count( const T& v, BP p ) const
706  {
707  return m_array.Count( v, p );
708  }
709 
712  template <class UP>
713  size_type CountIf( UP p ) const
714  {
715  return m_array.CountIf( p );
716  }
717 
721  {
722  return Begin();
723  }
724 
727  template <class BP>
728  const_iterator MinItem( BP p ) const
729  {
730  return pcl::MinItem( Begin(), End(), p );
731  }
732 
736  {
737  return IsEmpty() ? End() : End()-1;
738  }
739 
742  template <class BP>
743  const_iterator MaxItem( BP p ) const
744  {
745  return pcl::MaxItem( Begin(), End(), p );
746  }
747 
750  const_iterator Search( const T& v ) const
751  {
752  return pcl::BinarySearch( Begin(), End(), v );
753  }
754 
757  template <class BP>
758  const_iterator Search( const T& v, BP p ) const
759  {
760  return m_array.Search( v, p );
761  }
762 
765  const_iterator SearchLast( const T& v ) const
766  {
767  return pcl::BinarySearchLast( Begin(), End(), v );
768  }
769 
772  template <class BP>
773  const_iterator SearchLast( const T& v, BP p ) const
774  {
775  return m_array.SearchLast( v, p );
776  }
777 
780  bool Contains( const T& v ) const
781  {
782  return Search( v ) != End();
783  }
784 
787  template <class BP>
788  bool Contains( const T& v, BP p ) const
789  {
790  return Search( v, p ) != End();
791  }
792 
795  void Sort()
796  {
797  m_array.Sort();
798  }
799 
803  friend void Swap( SortedArray& x1, SortedArray& x2 )
804  {
805  pcl::Swap( x1.m_array, x2.m_array );
806  }
807 
812  friend bool operator ==( const SortedArray& x1, const SortedArray& x2 )
813  {
814  return x1.m_array == x2.m_array;
815  }
816 
821  friend bool operator ==( const SortedArray& x1, const array_implementation& x2 )
822  {
823  return x1.m_array == x2;
824  }
825 
830  friend bool operator ==( const array_implementation& x1, const SortedArray& x2 )
831  {
832  return x1 == x2.m_array;
833  }
834 
840  friend bool operator <( const SortedArray& x1, const SortedArray& x2 )
841  {
842  return x1.m_array < x2.m_array;
843  }
844 
849  friend bool operator <( const SortedArray& x1, const array_implementation& x2 )
850  {
851  return x1.m_array < x2;
852  }
853 
858  friend bool operator <( const array_implementation& x1, const SortedArray& x2 )
859  {
860  return x1 < x2.m_array;
861  }
862 
879  template <class S, typename SP>
880  S& ToSeparated( S& s, SP separator ) const
881  {
882  return m_array.ToSeparated( s, separator );
883  }
884 
907  template <class S, typename SP, class AF>
908  S& ToSeparated( S& s, SP separator, AF append ) const
909  {
910  return m_array.ToSeparated( s, separator, append );
911  }
912 
921  template <class S>
922  S& ToCommaSeparated( S& s ) const
923  {
924  return m_array.ToCommaSeparated( s );
925  }
926 
935  template <class S>
936  S& ToSpaceSeparated( S& s ) const
937  {
938  return m_array.ToSpaceSeparated( s );
939  }
940 
949  template <class S>
950  S& ToTabSeparated( S& s ) const
951  {
952  return m_array.ToTabSeparated( s );
953  }
954 
963  template <class S>
964  S& ToNewLineSeparated( S& s ) const
965  {
966  return m_array.ToNewLineSeparated( s );
967  }
968 
977  uint64 Hash64( uint64 seed = 0 ) const
978  {
979  return m_array.Hash64( seed );
980  }
981 
990  uint32 Hash32( uint32 seed = 0 ) const
991  {
992  return m_array.Hash32( seed );
993  }
994 
999  uint64 Hash( uint64 seed = 0 ) const
1000  {
1001  return Hash64( seed );
1002  }
1003 
1004  // -------------------------------------------------------------------------
1005 
1006 private:
1007 
1008  array_implementation m_array;
1009 };
1010 
1011 // ----------------------------------------------------------------------------
1012 
1021 template <class T, class A, class V> inline
1023 {
1024  x.Add( T( v ) );
1025  return x;
1026 }
1027 
1036 template <class T, class A, class V> inline
1038 {
1039  x.Add( T( v ) );
1040  return x;
1041 }
1042 
1048 template <class T, class A> inline
1050 {
1051  x1.Add( x2 );
1052  return x1;
1053 }
1054 
1060 template <class T, class A> inline
1062 {
1063  x1.Add( x2 );
1064  return x1;
1065 }
1066 
1072 template <class T, class A> inline
1074 {
1075  x1.Add( x2 );
1076  return x1;
1077 }
1078 
1084 template <class T, class A> inline
1086 {
1087  x1.Add( x2 );
1088  return x1;
1089 }
1090 
1091 // ----------------------------------------------------------------------------
1092 
1093 } // pcl
1094 
1095 #endif // __PCL_SortedArray_h
1096 
1097 // ----------------------------------------------------------------------------
1098 // EOF pcl/SortedArray.h - Released 2024-01-13T15:47:58Z
pcl::SortedArray::MutableAt
iterator MutableAt(size_type i)
Definition: SortedArray.h:293
pcl::SortedArray::UpperBound
size_type UpperBound() const
Definition: SortedArray.h:265
pcl::SortedArray::Assign
void Assign(const SortedArray &x)
Definition: SortedArray.h:434
pcl::SortedArray::Available
size_type Available() const
Definition: SortedArray.h:237
pcl
PCL root namespace.
Definition: AbstractImage.h:76
pcl::SortedArray::End
const_iterator End() const
Definition: SortedArray.h:335
pcl::SortedArray::ReverseBegin
const_reverse_iterator ReverseBegin() const
Definition: SortedArray.h:349
pcl::SortedArray::Capacity
size_type Capacity() const
Definition: SortedArray.h:230
pcl::SortedArray::begin
const_iterator begin() const
Definition: SortedArray.h:406
pcl::SortedArray::CountIf
size_type CountIf(UP p) const
Definition: SortedArray.h:713
pcl::LastThat
BI LastThat(BI i, BI j, UP p) noexcept(noexcept(p))
Definition: Utility.h:350
pcl::SortedArray::SortedArray
SortedArray(FI i, FI j)
Definition: SortedArray.h:143
pcl::SortedArray::Length
size_type Length() const
Definition: SortedArray.h:223
pcl::SortedArray::Add
void Add(const Array< T, A > &x)
Definition: SortedArray.h:547
pcl::SortedArray::Size
size_type Size() const
Definition: SortedArray.h:215
pcl::SortedArray::Transfer
void Transfer(array_implementation &x)
Definition: SortedArray.h:488
pcl::Array< Node *, StandardAllocator >::const_iterator
const Node * * const_iterator
Definition: Array.h:117
pcl::SortedArray::Assign
void Assign(const array_implementation &x)
Definition: SortedArray.h:472
pcl::SortedArray::Add
void Add(FI i, FI j)
Definition: SortedArray.h:562
pcl::InsertionPoint
FI InsertionPoint(FI i, FI j, const T &v) noexcept
Definition: Search.h:326
pcl::SortedArray::EnsureUnique
void EnsureUnique()
Definition: SortedArray.h:206
pcl::operator==
bool operator==(const Array< T, A > &x1, const Array< T, A > &x2) noexcept
Definition: Array.h:2090
pcl::Hash64
uint64 Hash64(const void *data, size_type size, uint64 seed=0) noexcept
Definition: Math.h:4750
pcl::Array::End
iterator End()
Definition: Array.h:451
pcl::SortedArray::Contains
bool Contains(const T &v) const
Definition: SortedArray.h:780
pcl::SortedArray::MutableReverseEnd
reverse_iterator MutableReverseEnd()
Definition: SortedArray.h:370
pcl::SortedArray::IsValid
bool IsValid() const
Definition: SortedArray.h:244
pcl::SortedArray::Reserve
void Reserve(size_type n)
Definition: SortedArray.h:650
pcl::SortedArray::Remove
void Remove(const T &v)
Definition: SortedArray.h:634
pcl::SortedArray::Clear
void Clear()
Definition: SortedArray.h:643
pcl::SortedArray::Import
void Import(iterator i, iterator j)
Definition: SortedArray.h:520
pcl::uint32
unsigned int uint32
Definition: Defs.h:669
pcl::BinarySearchLast
FI BinarySearchLast(FI i, FI j, const T &v) noexcept
Definition: Search.h:238
Array.h
pcl::SortedArray::Hash64
uint64 Hash64(uint64 seed=0) const
Definition: SortedArray.h:977
pcl::SortedArray::end
const_iterator end() const
Definition: SortedArray.h:414
pcl::MinItem
FI MinItem(FI i, FI j) noexcept
Definition: Utility.h:441
pcl::SortedArray::Squeeze
void Squeeze()
Definition: SortedArray.h:657
pcl::SortedArray::Truncate
void Truncate(const_iterator i)
Definition: SortedArray.h:613
pcl::SortedArray::Swap
friend void Swap(SortedArray &x1, SortedArray &x2)
Definition: SortedArray.h:803
pcl::SortedArray::IsUnique
bool IsUnique() const
Definition: SortedArray.h:184
pcl::SortedArray::Count
size_type Count(const T &v) const
Definition: SortedArray.h:696
pcl::SortedArray::MutableReverseBegin
reverse_iterator MutableReverseBegin()
Definition: SortedArray.h:356
pcl::SortedArray::SortedArray
SortedArray(size_type n, const T &v)
Definition: SortedArray.h:133
pcl::Search
FI1 Search(FI1 i1, FI1 j1, FI2 i2, FI2 j2) noexcept
Definition: Search.h:397
pcl::Apply
void Apply(FI i, FI j, F f) noexcept(noexcept(f))
Definition: Utility.h:249
pcl::operator<<
Array< T, A > & operator<<(Array< T, A > &x, const V &v)
Definition: Array.h:2118
pcl::SortedArray::Sort
void Sort()
Definition: SortedArray.h:795
pcl::SortedArray::MutableBegin
iterator MutableBegin()
Definition: SortedArray.h:328
pcl::size_type
size_t size_type
Definition: Defs.h:612
pcl::SortedArray::~SortedArray
~SortedArray()
Definition: SortedArray.h:177
pcl::uint64
unsigned long long uint64
Definition: Defs.h:685
pcl::SortedArray::Remove
void Remove(const_iterator i, const_iterator j)
Definition: SortedArray.h:598
pcl::Array< Node *, StandardAllocator >
pcl::SortedArray::Shrink
void Shrink(size_type n=1)
Definition: SortedArray.h:627
pcl::SortedArray::Transfer
void Transfer(SortedArray &x)
Definition: SortedArray.h:450
pcl::SortedArray::Search
const_iterator Search(const T &v) const
Definition: SortedArray.h:750
pcl::SortedArray::ReverseEnd
const_reverse_iterator ReverseEnd() const
Definition: SortedArray.h:363
pcl::SortedArray::Contains
bool Contains(const T &v, BP p) const
Definition: SortedArray.h:788
pcl::SortedArray::MaxItem
const_iterator MaxItem() const
Definition: SortedArray.h:735
pcl::SortedArray::UniquifyIterator
void UniquifyIterator(iterator &i)
Definition: SortedArray.h:383
pcl::SortedArray::MinItem
const_iterator MinItem() const
Definition: SortedArray.h:720
pcl::FirstThat
FI FirstThat(FI i, FI j, UP p) noexcept(noexcept(p))
Definition: Utility.h:316
pcl::SortedArray::MaxItem
const_iterator MaxItem(BP p) const
Definition: SortedArray.h:743
pcl::MaxItem
FI MaxItem(FI i, FI j) noexcept
Definition: Utility.h:479
pcl::DirectSortedContainer
Root base class of all PCL sorted containers of objects.
Definition: Container.h:101
pcl::SortedArray::Allocator
const allocator & Allocator() const
Definition: SortedArray.h:272
pcl::SortedArray::Fill
void Fill(const T &v)
Definition: SortedArray.h:665
pcl::StandardAllocator
A block allocator class that uses the standard new and delete operators.
Definition: StandardAllocator.h:81
pcl::SortedArray::Hash
uint64 Hash(uint64 seed=0) const
Definition: SortedArray.h:999
pcl::SortedArray< Node * >::allocator
typename array_implementation::allocator allocator
Definition: SortedArray.h:96
pcl::SortedArray::Begin
const_iterator Begin() const
Definition: SortedArray.h:321
pcl::SortedArray::FirstThat
const_iterator FirstThat(F f) const
Definition: SortedArray.h:681
pcl::Swap
void Swap(GenericPoint< T > &p1, GenericPoint< T > &p2) noexcept
Definition: Point.h:1459
pcl::SortedArray< Node * >::reverse_iterator
typename array_implementation::reverse_iterator reverse_iterator
Definition: SortedArray.h:108
pcl::SortedArray::Add
void Add(const SortedArray &x)
Definition: SortedArray.h:535
pcl::SortedArray::Transfer
void Transfer(SortedArray &&x)
Definition: SortedArray.h:457
pcl::SortedArray::IsAliasOf
bool IsAliasOf(const SortedArray &x) const
Definition: SortedArray.h:194
pcl::SortedArray::UniquifyIterators
void UniquifyIterators(iterator &i, iterator &j)
Definition: SortedArray.h:397
pcl::SortedArray::Search
const_iterator Search(const T &v, BP p) const
Definition: SortedArray.h:758
pcl::Sort
void Sort(BI i, BI j)
Definition: Sort.h:520
pcl::SortedArray::SortedArray
SortedArray(std::initializer_list< T1 > l)
Definition: SortedArray.h:158
pcl::SortedArray::IsEmpty
bool IsEmpty() const
Definition: SortedArray.h:251
pcl::operator*
Complex< T1 > operator*(const Complex< T1 > &c1, const Complex< T2 > &c2) noexcept
Definition: Complex.h:548
pcl::SortedArray< Node * >::const_reverse_iterator
typename array_implementation::const_reverse_iterator const_reverse_iterator
Definition: SortedArray.h:112
pcl::Array< Node *, StandardAllocator >::iterator
Node * * iterator
Definition: Array.h:113
pcl::BinarySearch
FI BinarySearch(FI i, FI j, const T &v) noexcept
Definition: Search.h:170
pcl::SortedArray::Apply
void Apply(F f) const
Definition: SortedArray.h:673
pcl::SortedArray< Node * >::iterator
typename array_implementation::iterator iterator
Definition: SortedArray.h:100
pcl::SortedArray::Hash32
uint32 Hash32(uint32 seed=0) const
Definition: SortedArray.h:990
pcl::SortedArray::SearchLast
const_iterator SearchLast(const T &v) const
Definition: SortedArray.h:765
pcl::SortedArray::Count
size_type Count(const T &v, BP p) const
Definition: SortedArray.h:705
pcl::SortedArray::Remove
void Remove(const_iterator i, size_type n=1)
Definition: SortedArray.h:591
pcl::SortedArray::SortedArray
SortedArray(size_type n)
Definition: SortedArray.h:125
pcl::SortedArray::MinItem
const_iterator MinItem(BP p) const
Definition: SortedArray.h:728
pcl::SortedArray::LowerBound
size_type LowerBound() const
Definition: SortedArray.h:258
pcl::SortedArray
Generic dynamic sorted array.
Definition: SortedArray.h:82
pcl::SortedArray::MutableIterator
iterator MutableIterator(const_iterator i)
Definition: SortedArray.h:300
pcl::SortedArray::LastThat
const_iterator LastThat(F f) const
Definition: SortedArray.h:689
pcl::SortedArray::Transfer
void Transfer(array_implementation &&x)
Definition: SortedArray.h:496
Defs.h
pcl::Allocator
Provides memory allocation for PCL containers.
Definition: Allocator.h:131
pcl::SortedArray::SearchLast
const_iterator SearchLast(const T &v, BP p) const
Definition: SortedArray.h:773
pcl::SortedArray::SetAllocator
void SetAllocator(const allocator &a)
Definition: SortedArray.h:279
pcl::SortedArray< Node * >::block_allocator
typename array_implementation::block_allocator block_allocator
Definition: SortedArray.h:92
pcl::SortedArray::Assign
void Assign(FI i, FI j)
Definition: SortedArray.h:512
pcl::SortedArray::At
const_iterator At(size_type i) const
Definition: SortedArray.h:286
pcl::SortedArray::MutableEnd
iterator MutableEnd()
Definition: SortedArray.h:342
pcl::Array::Begin
iterator Begin()
Definition: Array.h:426
pcl::SortedArray::Release
iterator Release()
Definition: SortedArray.h:528
pcl::SortedArray< Node * >::const_iterator
typename array_implementation::const_iterator const_iterator
Definition: SortedArray.h:104
pcl::ReverseRandomAccessIterator
Reverse random access iterator.
Definition: Iterator.h:419
pcl::SortedArray::Assign
void Assign(const T &v, size_type n=1)
Definition: SortedArray.h:504
pcl::operator<
bool operator<(const Array< T, A > &x1, const Array< T, A > &x2) noexcept
Definition: Array.h:2101
pcl::SortedArray::Add
const_iterator Add(const T &v, size_type n=1)
Definition: SortedArray.h:554