AGX Dynamics 2.37.3.4
Loading...
Searching...
No Matches
agx::VectorPOD< T, Allocator > Class Template Reference

Vector containing 'raw' data. More...

#include <Vector.h>

+ Inheritance diagram for agx::VectorPOD< T, Allocator >:

Public Types

typedef const T * const_iterator
 
typedef const T * const_pointer
 
typedef const T & const_reference
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 
typedef ptrdiff_t difference_type
 
typedef T * iterator
 
typedef T * pointer
 
typedef T & reference
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef size_t size_type
 
typedef T Type
 
typedef T value_type
 
- Public Types inherited from agx::Container
enum  ClearPolicy { SHRINK_BUFFER , SHRINK_BUFFER_AVERAGED , MAINTAIN_BUFFER }
 agxData::Values from this enumeration is passed to the subclasses' 'clear' method in order to control what should become of the container's memory. More...
 

Public Member Functions

 VectorPOD (const Allocator &allocator=Allocator())
 
 VectorPOD (const VectorPOD< T, Allocator > &other)
 
 VectorPOD (const_iterator first, const_iterator end, const Allocator &allocator=Allocator())
 
 VectorPOD (size_t size, const T &value=T(), const Allocator &allocator=Allocator())
 
 VectorPOD (std::initializer_list< T > values, const Allocator &allocator=Allocator())
 
 VectorPOD (VectorPOD< T, Allocator > &&other)
 
 ~VectorPOD ()
 
Allocatorallocator ()
 
const Allocatorallocator () const
 
T & at (size_t index) const
 
T & back () const
 
iterator begin ()
 
const_iterator begin () const
 
void clear (ClearPolicy policy=SHRINK_BUFFER_AVERAGED)
 Remove all elements, optionally with maintained buffer allocation.
 
bool contains (const T &element) const
 
template<typename T2 >
bool contains (const T2 &element) const
 Test if the vector contains a certain element.
 
iterator end ()
 
const_iterator end () const
 
iterator erase (iterator position)
 STL erase functionality.
 
iterator erase (iterator start, iterator end)
 
void erase (size_t index)
 Erase elements using indices instead of iterators.
 
void erase (size_t start, size_t end)
 
iterator eraseFast (const_iterator position)
 Fast erase, replacing the erased element with the last element.
 
void eraseFast (size_t index)
 
template<typename T2 >
size_t find (const T2 &element) const
 Find the index to a matching element, return size() if not found.
 
bool findAndErase (const T &element, bool searchMultiple=false)
 Find and erase an element.
 
T & front () const
 
T * increment (size_t numElements=1)
 Resize using a increment.
 
template<typename InputIterator >
void insert (const_iterator it, InputIterator first, InputIterator last)
 
void insert (const_iterator it, std::initializer_list< T > ilist)
 
iterator insert (iterator position, const T &value)
 
void insert (size_t index, const T &value)
 
bool operator!= (const VectorPOD< T, Allocator > &other) const
 
VectorPOD< T, Allocator > & operator= (const VectorPOD< T, Allocator > &other)
 
bool operator== (const VectorPOD< T, Allocator > &other) const
 Compare with other vector, return true if same size and all pairs are equal.
 
T & operator[] (size_t i) const
 
void pop_back ()
 
T * ptr ()
 Get access to the internal data buffer.
 
const T * ptr () const
 
void push_back (const T &value)
 
void push_back (T &&value)
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
void reserve (size_t size)
 Reserve capacity in the vector.
 
void reserveAtLeast (size_t size)
 Reserve capacity in the vector.
 
void resize (size_t size)
 Resize the vector, which then enables direct addressing using the bracket '[]' operator.
 
void resize (size_t size, const T &value)
 
void shrink_to_fit ()
 Reduce the capacity of the vector to the actual size (number of elements)
 
void swap (VectorPOD &other)
 
- Public Member Functions inherited from agx::Container
size_t capacity () const
 Returns the size of the memory are used by the container to store its elements.
 
bool empty () const
 
void * ptr ()
 
const void * ptr () const
 
size_t size () const
 

Additional Inherited Members

- Protected Member Functions inherited from agx::Container
 Container ()
 
 Container (const Container &other)
 
 Container (Container &&other)
 
 ~Container ()
 
- Protected Attributes inherited from agx::Container
void * m_buffer
 
size_t m_capacity
 
size_t m_size
 

Detailed Description

template<typename T, typename Allocator = ByteAllocator>
class agx::VectorPOD< T, Allocator >

Vector containing 'raw' data.

Same interface as normal vectors, but no element constructors or destructors are executed. New elements are however initialized by basic memory copying from a default instance.

Definition at line 245 of file agx/Vector.h.

Member Typedef Documentation

◆ const_iterator

template<typename T , typename Allocator = ByteAllocator>
typedef const T* agx::VectorPOD< T, Allocator >::const_iterator

Definition at line 256 of file agx/Vector.h.

◆ const_pointer

template<typename T , typename Allocator = ByteAllocator>
typedef const T* agx::VectorPOD< T, Allocator >::const_pointer

Definition at line 251 of file agx/Vector.h.

◆ const_reference

template<typename T , typename Allocator = ByteAllocator>
typedef const T& agx::VectorPOD< T, Allocator >::const_reference

Definition at line 253 of file agx/Vector.h.

◆ const_reverse_iterator

template<typename T , typename Allocator = ByteAllocator>
typedef std::reverse_iterator<const_iterator> agx::VectorPOD< T, Allocator >::const_reverse_iterator

Definition at line 323 of file agx/Vector.h.

◆ difference_type

template<typename T , typename Allocator = ByteAllocator>
typedef ptrdiff_t agx::VectorPOD< T, Allocator >::difference_type

Definition at line 257 of file agx/Vector.h.

◆ iterator

template<typename T , typename Allocator = ByteAllocator>
typedef T* agx::VectorPOD< T, Allocator >::iterator

Definition at line 255 of file agx/Vector.h.

◆ pointer

template<typename T , typename Allocator = ByteAllocator>
typedef T* agx::VectorPOD< T, Allocator >::pointer

Definition at line 250 of file agx/Vector.h.

◆ reference

template<typename T , typename Allocator = ByteAllocator>
typedef T& agx::VectorPOD< T, Allocator >::reference

Definition at line 252 of file agx/Vector.h.

◆ reverse_iterator

template<typename T , typename Allocator = ByteAllocator>
typedef std::reverse_iterator<iterator> agx::VectorPOD< T, Allocator >::reverse_iterator

Definition at line 322 of file agx/Vector.h.

◆ size_type

template<typename T , typename Allocator = ByteAllocator>
typedef size_t agx::VectorPOD< T, Allocator >::size_type

Definition at line 254 of file agx/Vector.h.

◆ Type

template<typename T , typename Allocator = ByteAllocator>
typedef T agx::VectorPOD< T, Allocator >::Type

Definition at line 248 of file agx/Vector.h.

◆ value_type

template<typename T , typename Allocator = ByteAllocator>
typedef T agx::VectorPOD< T, Allocator >::value_type

Definition at line 249 of file agx/Vector.h.

Constructor & Destructor Documentation

◆ VectorPOD() [1/6]

template<typename T , typename Allocator = ByteAllocator>
agx::VectorPOD< T, Allocator >::VectorPOD ( const Allocator allocator = Allocator())
explicit

◆ VectorPOD() [2/6]

template<typename T , typename Allocator = ByteAllocator>
agx::VectorPOD< T, Allocator >::VectorPOD ( size_t  size,
const T &  value = T(),
const Allocator allocator = Allocator() 
)
explicit

◆ VectorPOD() [3/6]

template<typename T , typename Allocator = ByteAllocator>
agx::VectorPOD< T, Allocator >::VectorPOD ( const_iterator  first,
const_iterator  end,
const Allocator allocator = Allocator() 
)
explicit

◆ VectorPOD() [4/6]

template<typename T , typename Allocator = ByteAllocator>
agx::VectorPOD< T, Allocator >::VectorPOD ( std::initializer_list< T >  values,
const Allocator allocator = Allocator() 
)

◆ VectorPOD() [5/6]

template<typename T , typename Allocator = ByteAllocator>
agx::VectorPOD< T, Allocator >::VectorPOD ( const VectorPOD< T, Allocator > &  other)

◆ VectorPOD() [6/6]

template<typename T , typename Allocator = ByteAllocator>
agx::VectorPOD< T, Allocator >::VectorPOD ( VectorPOD< T, Allocator > &&  other)

◆ ~VectorPOD()

template<typename T , typename A >
agx::VectorPOD< T, A >::~VectorPOD

Definition at line 1317 of file agx/Vector.h.

References agx::ByteAllocator::deallocateBytes(), m_capacity, and m_elements.

Member Function Documentation

◆ allocator() [1/2]

template<typename T , typename A >
A & agx::VectorPOD< T, A >::allocator

Definition at line 1593 of file agx/Vector.h.

◆ allocator() [2/2]

template<typename T , typename A >
const A & agx::VectorPOD< T, A >::allocator

Definition at line 1596 of file agx/Vector.h.

◆ at()

template<typename T , typename A >
T & agx::VectorPOD< T, A >::at ( size_t  index) const

Definition at line 1338 of file agx/Vector.h.

References agxVerifyN, m_elements, and m_size.

◆ back()

template<typename T , typename A >
T & agx::VectorPOD< T, A >::back

Definition at line 1354 of file agx/Vector.h.

References agxAssert1, m_elements, and m_size.

Referenced by agxUtil::ConvexHull2D::back(), and agx::Event::trigger().

◆ begin() [1/2]

template<typename T , typename A >
VectorPOD< T, A >::iterator agx::VectorPOD< T, A >::begin

Definition at line 1609 of file agx/Vector.h.

References m_elements.

Referenced by agxUtil::ConvexHull2D::begin(), and agx::begin().

◆ begin() [2/2]

template<typename T , typename A >
VectorPOD< T, A >::const_iterator agx::VectorPOD< T, A >::begin

Definition at line 1615 of file agx/Vector.h.

References m_elements.

◆ clear()

template<typename T , typename A >
void agx::VectorPOD< T, A >::clear ( ClearPolicy  policy = SHRINK_BUFFER_AVERAGED)

◆ contains() [1/2]

template<typename T , typename A >
bool agx::VectorPOD< T, A >::contains ( const T &  element) const

Definition at line 1458 of file agx/Vector.h.

References m_size.

◆ contains() [2/2]

template<typename T , typename A >
template<typename T2 >
bool agx::VectorPOD< T, A >::contains ( const T2 &  element) const

Test if the vector contains a certain element.

Definition at line 1452 of file agx/Vector.h.

References m_size.

Referenced by agx::Job::hasDependency().

◆ end() [1/2]

template<typename T , typename A >
VectorPOD< T, A >::iterator agx::VectorPOD< T, A >::end

Definition at line 1612 of file agx/Vector.h.

References m_elements, and m_size.

Referenced by agxUtil::ConvexHull2D::end(), and agx::end().

◆ end() [2/2]

template<typename T , typename A >
VectorPOD< T, A >::const_iterator agx::VectorPOD< T, A >::end

Definition at line 1618 of file agx/Vector.h.

References m_elements, and m_size.

◆ erase() [1/4]

template<typename T , typename A >
VectorPOD< T, A >::iterator agx::VectorPOD< T, A >::erase ( iterator  position)

STL erase functionality.

Definition at line 1395 of file agx/Vector.h.

References agx::begin().

◆ erase() [2/4]

template<typename T , typename A >
VectorPOD< T, A >::iterator agx::VectorPOD< T, A >::erase ( iterator  start,
iterator  end 
)

Definition at line 1403 of file agx/Vector.h.

References agx::begin(), and agx::end().

◆ erase() [3/4]

template<typename T , typename A >
void agx::VectorPOD< T, A >::erase ( size_t  index)

Erase elements using indices instead of iterators.

Definition at line 1414 of file agx/Vector.h.

◆ erase() [4/4]

template<typename T , typename A >
void agx::VectorPOD< T, A >::erase ( size_t  start,
size_t  end 
)

Definition at line 1420 of file agx/Vector.h.

References agxAssert1, agx::end(), m_elements, and m_size.

◆ eraseFast() [1/2]

template<typename T , typename A >
VectorPOD< T, A >::iterator agx::VectorPOD< T, A >::eraseFast ( const_iterator  position)

Fast erase, replacing the erased element with the last element.

Definition at line 1436 of file agx/Vector.h.

References agx::begin().

◆ eraseFast() [2/2]

template<typename T , typename A >
void agx::VectorPOD< T, A >::eraseFast ( size_t  index)

Definition at line 1444 of file agx/Vector.h.

References agxAssertN, m_elements, and m_size.

◆ find()

template<typename T , typename A >
template<typename T2 >
size_t agx::VectorPOD< T, A >::find ( const T2 &  element) const

Find the index to a matching element, return size() if not found.

Definition at line 1465 of file agx/Vector.h.

References m_elements, and m_size.

◆ findAndErase()

template<typename T , typename A >
bool agx::VectorPOD< T, A >::findAndErase ( const T &  element,
bool  searchMultiple = false 
)

Find and erase an element.

Parameters
element- Element to search for and erase
searchMultipleSet to true if search should continue after element is found, otherwise the search terminates on first match.
Returns
true if the element was found, else false

Definition at line 1478 of file agx/Vector.h.

References m_elements, and m_size.

Referenced by agx::Job::removeDependency().

◆ front()

template<typename T , typename A >
T & agx::VectorPOD< T, A >::front

Definition at line 1346 of file agx/Vector.h.

References agxAssert1, m_elements, and m_size.

Referenced by agxUtil::ConvexHull2D::front().

◆ increment()

template<typename T , typename A >
T * agx::VectorPOD< T, A >::increment ( size_t  numElements = 1)

Resize using a increment.

Definition at line 1255 of file agx/Vector.h.

References AGX_VECTOR_RESIZE_FACTOR, m_capacity, m_elements, and m_size.

◆ insert() [1/4]

template<typename T , typename A >
template<typename InputIterator >
void agx::VectorPOD< T, A >::insert ( const_iterator  it,
InputIterator  first,
InputIterator  last 
)

Definition at line 1517 of file agx/Vector.h.

References AGX_VECTOR_RESIZE_FACTOR, agx::begin(), m_capacity, m_elements, and m_size.

◆ insert() [2/4]

template<typename T , typename A >
void agx::VectorPOD< T, A >::insert ( const_iterator  it,
std::initializer_list< T >  ilist 
)

Definition at line 1511 of file agx/Vector.h.

◆ insert() [3/4]

template<typename T , typename A >
VectorPOD< T, A >::iterator agx::VectorPOD< T, A >::insert ( iterator  position,
const T &  value 
)

Definition at line 1501 of file agx/Vector.h.

References agxAssert, and agx::begin().

◆ insert() [4/4]

template<typename T , typename A >
void agx::VectorPOD< T, A >::insert ( size_t  index,
const T &  value 
)

◆ operator!=()

template<typename T , typename Allocator = ByteAllocator>
bool agx::VectorPOD< T, A >::operator!= ( const VectorPOD< T, Allocator > &  other) const

Definition at line 1282 of file agx/Vector.h.

References m_elements, m_size, and agx::Container::size().

◆ operator=()

template<typename T , typename Allocator = ByteAllocator>
VectorPOD< T, A > & agx::VectorPOD< T, A >::operator= ( const VectorPOD< T, Allocator > &  other)

◆ operator==()

template<typename T , typename Allocator = ByteAllocator>
bool agx::VectorPOD< T, A >::operator== ( const VectorPOD< T, Allocator > &  other) const

Compare with other vector, return true if same size and all pairs are equal.

Definition at line 1269 of file agx/Vector.h.

References m_elements, m_size, and agx::Container::size().

◆ operator[]()

template<typename T , typename A >
T & agx::VectorPOD< T, A >::operator[] ( size_t  i) const

Definition at line 1330 of file agx/Vector.h.

References agxAssertN, m_elements, and m_size.

◆ pop_back()

template<typename T , typename A >
void agx::VectorPOD< T, A >::pop_back

Definition at line 1386 of file agx/Vector.h.

References m_size.

Referenced by agx::Event::trigger().

◆ ptr() [1/2]

template<typename T , typename A >
T * agx::VectorPOD< T, A >::ptr

Get access to the internal data buffer.

Definition at line 1324 of file agx/Vector.h.

References m_elements.

Referenced by agxData::Array< T >::Array(), agxData::BufferT< T >::commit(), and agx::VectorPOD< T, Allocator >::operator=().

◆ ptr() [2/2]

template<typename T , typename A >
const T * agx::VectorPOD< T, A >::ptr

Definition at line 1327 of file agx/Vector.h.

References m_elements.

◆ push_back() [1/2]

◆ push_back() [2/2]

template<typename T , typename A >
void agx::VectorPOD< T, A >::push_back ( T &&  value)

◆ rbegin() [1/2]

template<typename T , typename A >
VectorPOD< T, A >::reverse_iterator agx::VectorPOD< T, A >::rbegin

Definition at line 1621 of file agx/Vector.h.

◆ rbegin() [2/2]

template<typename T , typename A >
VectorPOD< T, A >::const_reverse_iterator agx::VectorPOD< T, A >::rbegin

Definition at line 1627 of file agx/Vector.h.

◆ rend() [1/2]

template<typename T , typename A >
VectorPOD< T, A >::reverse_iterator agx::VectorPOD< T, A >::rend

Definition at line 1624 of file agx/Vector.h.

References agx::begin().

◆ rend() [2/2]

template<typename T , typename A >
VectorPOD< T, A >::const_reverse_iterator agx::VectorPOD< T, A >::rend

Definition at line 1630 of file agx/Vector.h.

References agx::begin().

◆ reserve()

template<typename T , typename A >
void agx::VectorPOD< T, A >::reserve ( size_t  size)

Reserve capacity in the vector.

Definition at line 1235 of file agx/Vector.h.

References m_capacity.

◆ reserveAtLeast()

template<typename T , typename A >
void agx::VectorPOD< T, A >::reserveAtLeast ( size_t  size)

Reserve capacity in the vector.

Let vector grow in same way as push_back() does.

Definition at line 1243 of file agx/Vector.h.

References AGX_VECTOR_MIN_SIZE, AGX_VECTOR_RESIZE_FACTOR, and m_capacity.

◆ resize() [1/2]

template<typename T , typename A >
void agx::VectorPOD< T, A >::resize ( size_t  size)

Resize the vector, which then enables direct addressing using the bracket '[]' operator.

Definition at line 1196 of file agx/Vector.h.

References AGX_VECTOR_SHRINK_THRESHOLD, m_capacity, and m_size.

◆ resize() [2/2]

template<typename T , typename A >
void agx::VectorPOD< T, A >::resize ( size_t  size,
const T &  value 
)

Definition at line 1216 of file agx/Vector.h.

References AGX_VECTOR_SHRINK_THRESHOLD, m_capacity, and m_size.

◆ shrink_to_fit()

template<typename T , typename A >
void agx::VectorPOD< T, A >::shrink_to_fit

Reduce the capacity of the vector to the actual size (number of elements)

Definition at line 1186 of file agx/Vector.h.

References m_capacity, and m_size.

◆ swap()

template<typename T , typename A >
void agx::VectorPOD< T, A >::swap ( VectorPOD< T, Allocator > &  other)

The documentation for this class was generated from the following file: