Dune Core Modules (2.9.0)

A vector of blocks with memory management. More...

#include <dune/istl/bvector.hh>

Public Types

using field_type = typename Imp::BlockTraits< B >::field_type
 export the type representing the field
 
typedef B block_type
 export the type representing the components
 
typedef A allocator_type
 export the allocator type
 
typedef A::size_type size_type
 The type for the index access.
 
typedef Imp::block_vector_unmanaged< B, A >::Iterator Iterator
 make iterators available as types
 
typedef Imp::block_vector_unmanaged< B, A >::ConstIterator ConstIterator
 make iterators available as types
 

Public Member Functions

 BlockVector ()
 makes empty vector
 
 BlockVector (size_type _n)
 make vector with _n components
 
 BlockVector (std::initializer_list< B > const &l)
 Construct from a std::initializer_list.
 
template<typename S >
 BlockVector (size_type _n, S _capacity)
 Make vector with _n components but preallocating capacity components. More...
 
void reserve (size_type capacity)
 Reserve space. More...
 
size_type capacity () const
 Get the capacity of the vector. More...
 
void resize (size_type size)
 Resize the vector. More...
 
 BlockVector (const BlockVector &a) noexcept(noexcept(std::declval< BlockVector >().storage_=a.storage_))
 copy constructor
 
 BlockVector (BlockVector &&a) noexcept(noexcept(std::declval< BlockVector >().swap(a)))
 move constructor
 
BlockVectoroperator= (const BlockVector &a) noexcept(noexcept(std::declval< BlockVector >().storage_=a.storage_))
 assignment
 
BlockVectoroperator= (BlockVector &&a) noexcept(noexcept(std::declval< BlockVector >().swap(a)))
 move assignment
 
void swap (BlockVector &other) noexcept(noexcept(std::declval< BlockVector & >().storage_.swap(other.storage_)))
 swap operation
 
BlockVectoroperator= (const field_type &k)
 assign from scalar
 

Static Public Attributes

static constexpr unsigned int blocklevel = blockLevel<B>()+1
 increment block level counter
 

Detailed Description

template<class B, class A = std::allocator<B>>
class Dune::BlockVector< B, A >

A vector of blocks with memory management.

BlockVector adds memory management with ordinary copy semantics to the block_vector_unmanaged template.

Error checking: no error checking is provided normally.
Setting the compile time switch DUNE_ISTL_WITH_CHECKING
enables error checking.

Constructor & Destructor Documentation

◆ BlockVector()

template<class B , class A = std::allocator<B>>
template<typename S >
Dune::BlockVector< B, A >::BlockVector ( size_type  _n,
_capacity 
)
inline

Make vector with _n components but preallocating capacity components.

If _n > capacity then space for _n entries is allocated.

Note
This constructor is somewhat dangerous. People may be tempted to write something like
A vector of blocks with memory management.
Definition: bvector.hh:395
expecting to obtain a vector of 100 doubles initialized with zero. However, the code calls this constructor which tacitly does something else!

Member Function Documentation

◆ capacity()

template<class B , class A = std::allocator<B>>
size_type Dune::BlockVector< B, A >::capacity ( ) const
inline

Get the capacity of the vector.

I. e. the maximum number of elements the vector can hold.

Returns
The capacity of the vector.

◆ reserve()

template<class B , class A = std::allocator<B>>
void Dune::BlockVector< B, A >::reserve ( size_type  capacity)
inline

Reserve space.

Allocate storage for up to capacity blocks. Resizing won't cause reallocation until the size exceeds the capacity

Parameters
capacityThe maximum number of elements the vector needs to hold.

◆ resize()

template<class B , class A = std::allocator<B>>
void Dune::BlockVector< B, A >::resize ( size_type  size)
inline

Resize the vector.

Resize the vector to the given number of blocks. Blocks below the given size are copied (moved if possible). Old blocks above the given size are destructed, new blocks above the given size are value-initialized.

Parameters
sizeThe new number of blocks of the vector.

The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Dec 20, 23:31, 2024)