HDK
|
#include <smallVector.h>
Public Types | |
Relevant Typedefs. | |
XXX: Functionality currently missing, and which we would like to add as needed:
| |
typedef T | value_type |
typedef T & | reference |
typedef const T & | const_reference |
Public Types inherited from TfSmallVectorBase | |
using | size_type = std::uint32_t |
using | difference_type = std::int32_t |
Public Member Functions | |
reference | front () |
const_reference | front () const |
reference | back () |
const_reference | back () const |
reference | operator[] (size_type i) |
const_reference | operator[] (size_type i) const |
value_type * | data () |
const value_type * | data () const |
bool | operator== (const TfSmallVector &rhs) const |
bool | operator!= (const TfSmallVector &rhs) const |
Returns an iterator to the beginning of the vector. | |
iterator | begin () |
const_iterator | begin () const |
const_iterator | cbegin () const |
Returns an iterator to the end of the vector. | |
iterator | end () |
const_iterator | end () const |
const_iterator | cend () const |
Returns a reverse iterator to the beginning of the vector. | |
reverse_iterator | rbegin () |
const_reverse_iterator | rbegin () const |
const_reverse_iterator | crbegin () const |
Returns a reverse iterator to the end of the vector. | |
reverse_iterator | rend () |
const_reverse_iterator | rend () const |
const_reverse_iterator | crend () const |
Iterator Support. | |
enum | DefaultInitTag { DefaultInit } |
using | iterator = T * |
using | const_iterator = const T * |
typedef std::reverse_iterator < iterator > | reverse_iterator |
typedef std::reverse_iterator < const_iterator > | const_reverse_iterator |
template<typename _ForwardIterator > | |
using | _EnableIfForwardIterator = typename std::enable_if< std::is_convertible< typename std::iterator_traits< _ForwardIterator >::iterator_category, std::forward_iterator_tag >::value >::type |
TfSmallVector () | |
}@ More... | |
TfSmallVector (size_type n) | |
TfSmallVector (size_type n, const value_type &v) | |
TfSmallVector (size_type n, DefaultInitTag) | |
TfSmallVector (const TfSmallVector &rhs) | |
TfSmallVector (TfSmallVector &&rhs) | |
TfSmallVector (std::initializer_list< T > values) | |
Construct a new vector from initializer list. More... | |
template<typename ForwardIterator , typename = _EnableIfForwardIterator<ForwardIterator>> | |
TfSmallVector (ForwardIterator first, ForwardIterator last) | |
~TfSmallVector () | |
TfSmallVector & | operator= (const TfSmallVector &rhs) |
TfSmallVector & | operator= (TfSmallVector &&rhs) |
TfSmallVector & | operator= (std::initializer_list< T > ilist) |
void | swap (TfSmallVector &rhs) |
iterator | insert (const_iterator it, value_type &&v) |
iterator | insert (const_iterator it, const value_type &v) |
iterator | erase (const_iterator it) |
iterator | erase (const_iterator it, const_iterator last) |
void | reserve (size_type newCapacity) |
void | resize (size_type newSize, const value_type &v=value_type()) |
void | clear () |
template<typename ForwardIterator , typename = _EnableIfForwardIterator<ForwardIterator>> | |
void | assign (ForwardIterator first, ForwardIterator last) |
void | assign (std::initializer_list< T > ilist) |
template<typename... Args> | |
void | emplace_back (Args &&...args) |
void | push_back (const value_type &v) |
void | push_back (value_type &&v) |
template<typename ForwardIterator > | |
void | insert (iterator pos, ForwardIterator first, ForwardIterator last) |
void | insert (iterator pos, std::initializer_list< T > ilist) |
void | pop_back () |
size_type | size () const |
bool | empty () const |
size_type | capacity () const |
static constexpr size_type | max_size () |
static constexpr size_type | internal_capacity () |
Additional Inherited Members | |
Static Public Member Functions inherited from TfSmallVectorBase | |
template<typename U > | |
static constexpr size_type | ComputeSerendipitousLocalCapacity () |
Static Protected Member Functions inherited from TfSmallVectorBase | |
template<typename Iterator > | |
static Iterator | _UninitializedMove (Iterator first, Iterator last, Iterator dest) |
template<typename U > | |
static void | _MoveConstruct (U *p, U *src) |
This is a small-vector class with local storage optimization, the local storage can be specified via a template parameter, and expresses the number of entries the container can store locally.
In addition to the local storage optimization, this vector is also optimized for storing a smaller number of entries on the heap: It features a reduced memory footprint (minimum 16 bytes) by limiting max_size() to 2^32, which should still be more than enough for most use cases where a small-vector is advantageous.
TfSmallVector mimics the std::vector API, and can thus be easily used as a drop-in replacement where appropriate. Note, however, that not all the methods on std::vector are implemented here, and that TfSmallVector may have methods in addition to those that you would find on std::vector.
Note that a TfSmallVector that has grown beyond its local storage, will NOT move its entries back into the local storage once it shrinks back to N.
Definition at line 177 of file smallVector.h.
using TfSmallVector< T, N >::_EnableIfForwardIterator = typename std::enable_if< std::is_convertible< typename std::iterator_traits< _ForwardIterator>::iterator_category, std::forward_iterator_tag >::value >::type |
Construct a vector holding n
default-initialized elements.
Definition at line 284 of file smallVector.h.
using TfSmallVector< T, N >::const_iterator = const T* |
Construct a vector holding n
default-initialized elements.
Definition at line 202 of file smallVector.h.
typedef const T& TfSmallVector< T, N >::const_reference |
Definition at line 194 of file smallVector.h.
typedef std::reverse_iterator<const_iterator> TfSmallVector< T, N >::const_reverse_iterator |
Construct a vector holding n
default-initialized elements.
Definition at line 204 of file smallVector.h.
using TfSmallVector< T, N >::iterator = T* |
Construct a vector holding n
default-initialized elements.
Definition at line 201 of file smallVector.h.
typedef T& TfSmallVector< T, N >::reference |
Definition at line 193 of file smallVector.h.
typedef std::reverse_iterator<iterator> TfSmallVector< T, N >::reverse_iterator |
Construct a vector holding n
default-initialized elements.
Definition at line 203 of file smallVector.h.
typedef T TfSmallVector< T, N >::value_type |
Definition at line 192 of file smallVector.h.
enum TfSmallVector::DefaultInitTag |
Construct a vector holding n
default-initialized elements.
Enumerator | |
---|---|
DefaultInit |
Definition at line 233 of file smallVector.h.
|
inline |
|
inlineexplicit |
Construct a vector holding n
value-initialized elements.
Definition at line 214 of file smallVector.h.
|
inline |
Construct a vector holding n
copies of v
.
Definition at line 225 of file smallVector.h.
|
inline |
Construct a vector holding n
default-initialized elements.
Definition at line 234 of file smallVector.h.
|
inline |
Copy constructor.
Definition at line 245 of file smallVector.h.
|
inline |
Move constructor.
Definition at line 252 of file smallVector.h.
|
inline |
Construct a new vector from initializer list.
Definition at line 272 of file smallVector.h.
|
inline |
Creates a new vector containing copies of the data between first
and last
.
Definition at line 290 of file smallVector.h.
|
inline |
Destructor.
Definition at line 298 of file smallVector.h.
|
inline |
Clears any previously held entries, and copies entries between [ first
, last
) to this vector.
Definition at line 484 of file smallVector.h.
|
inline |
Replace existing contents with the contents of ilist
.
Definition at line 494 of file smallVector.h.
|
inline |
Returns the last element in the vector.
Definition at line 744 of file smallVector.h.
|
inline |
Returns the last elements in the vector.
Definition at line 750 of file smallVector.h.
|
inline |
Definition at line 665 of file smallVector.h.
|
inline |
Definition at line 669 of file smallVector.h.
|
inline |
Returns the current capacity of this vector. Note that if the returned value is <= N, it does NOT mean the storage is local. A vector that has previously grown beyond its local storage, will not move entries back to the local storage once it shrinks to N.
Definition at line 650 of file smallVector.h.
|
inline |
Definition at line 673 of file smallVector.h.
|
inline |
Definition at line 690 of file smallVector.h.
|
inline |
Clear the entries in the vector. Does not let go of the underpinning storage.
Definition at line 474 of file smallVector.h.
|
inline |
Definition at line 707 of file smallVector.h.
|
inline |
Definition at line 724 of file smallVector.h.
|
inline |
Direct access to the underlying array.
Definition at line 768 of file smallVector.h.
|
inline |
Direct access to the underlying array.
Definition at line 774 of file smallVector.h.
|
inline |
Emplace an entry at the back of the vector.
Definition at line 501 of file smallVector.h.
|
inline |
Returns true
if this vector is empty.
Definition at line 641 of file smallVector.h.
|
inline |
Definition at line 682 of file smallVector.h.
|
inline |
Definition at line 686 of file smallVector.h.
|
inline |
Erase an entry at the given iterator.
Definition at line 408 of file smallVector.h.
|
inline |
Erase entries between [ first
, last
) from the vector.
Definition at line 414 of file smallVector.h.
|
inline |
Returns the first element in the vector.
Definition at line 732 of file smallVector.h.
|
inline |
Returns the first element in the vector.
Definition at line 738 of file smallVector.h.
|
inline |
Insert an rvalue-reference entry at the given iterator position.
Definition at line 396 of file smallVector.h.
|
inline |
Insert an entry at the given iterator.
Definition at line 402 of file smallVector.h.
|
inline |
Copy the range denoted by [first
, last
) into this vector before pos
.
Definition at line 525 of file smallVector.h.
|
inline |
Insert elements from ilist
starting at position pos
.
Definition at line 616 of file smallVector.h.
|
inlinestatic |
Returns the local storage capacity. The vector uses its local storage if capacity() <= internal_capacity(). This method mimics the hboost::container::small_vector interface.
Definition at line 658 of file smallVector.h.
|
inlinestatic |
Returns the maximum size of this vector.
Definition at line 635 of file smallVector.h.
|
inline |
Lexicographically compares the elements in the vectors for inequality.
Definition at line 786 of file smallVector.h.
|
inline |
Assignment operator.
Definition at line 305 of file smallVector.h.
|
inline |
Move assignment operator.
Definition at line 314 of file smallVector.h.
|
inline |
Replace existing contents with the contents of ilist
.
Definition at line 323 of file smallVector.h.
|
inline |
Lexicographically compares the elements in the vectors for equality.
Definition at line 780 of file smallVector.h.
|
inline |
Access the specified element.
Definition at line 756 of file smallVector.h.
|
inline |
Access the specified element.
Definition at line 762 of file smallVector.h.
|
inline |
Remove the entry at the back of the vector.
Definition at line 622 of file smallVector.h.
|
inline |
Copy an entry to the back of the vector,
Definition at line 511 of file smallVector.h.
|
inline |
Move an entry to the back of the vector.
Definition at line 517 of file smallVector.h.
|
inline |
Definition at line 699 of file smallVector.h.
|
inline |
Definition at line 703 of file smallVector.h.
|
inline |
Definition at line 716 of file smallVector.h.
|
inline |
Definition at line 720 of file smallVector.h.
|
inline |
Reserve storage for newCapacity
entries.
Definition at line 443 of file smallVector.h.
|
inline |
Resize the vector to newSize
and insert copies of .
Definition at line 454 of file smallVector.h.
|
inline |
Returns the current size of the vector.
Definition at line 629 of file smallVector.h.
|
inline |
Swap two vector instances.
Definition at line 330 of file smallVector.h.