1#ifndef DUNE_FEM_REFERENCEVECTOR_HH
2#define DUNE_FEM_REFERENCEVECTOR_HH
10#include <dune/common/densevector.hh>
11#include <dune/common/ftraits.hh>
21 template<
class K,
class A = std::allocator< K* > >
22 class DynamicReferenceVector;
26 template<
class K,
class A >
27 struct DenseMatVecTraits< Fem::DynamicReferenceVector< K, A > >
30 typedef std::vector< K*, typename A::template rebind< K* >::other >
container_type;
33 typedef typename container_type::size_type
size_type;
36 template<
class K,
class A >
37 struct FieldTraits< Fem::DynamicReferenceVector< K, A > >
39 typedef typename FieldTraits< K >::field_type
field_type;
40 typedef typename FieldTraits< K >::real_type
real_type;
51 template<
class K,
class A >
55 typedef DenseVector< ThisType > BaseType;
61 typedef typename DenseMatVecTraits< ThisType >::container_type
DofStorageType;
70 : data_( n, nullptr, a )
81 : data_(
std::move( other.data_ ) )
98 assert( data_.size() == other.size() );
99 std::copy( other.begin(), other.end(), BaseType::begin() );
105 assert( data_.size() == other.
size() );
106 std::copy( other.begin(), other.end(), BaseType::begin() );
112 data_ = std::move( other.data_ );
118 return data_.capacity();
123 data_.resize( n,
nullptr );
134 assert( i < data_.size() );
141 asssert( i < data_.size() );
142 data_[ i ] =
nullptr;
162 for (std::size_t i=0;i<
size();++i)
Definition: bindguard.hh:11
An implementation of DenseVector which uses a std::vector of references as storage.
Definition: storage/referencevector.hh:53
ThisType & operator=(const value_type &k)
Definition: storage/referencevector.hh:88
size_type size() const
Definition: storage/referencevector.hh:145
DynamicReferenceVector(ThisType &&other)
Move constructor.
Definition: storage/referencevector.hh:80
DenseMatVecTraits< ThisType >::container_type DofStorageType
Definition: storage/referencevector.hh:61
void unbind(size_type i)
Unbind i-th entry.
Definition: storage/referencevector.hh:139
void reserve(size_type n)
Definition: storage/referencevector.hh:126
void resize(size_type n)
Definition: storage/referencevector.hh:121
BaseType::size_type size_type
Definition: storage/referencevector.hh:58
BaseType::value_type value_type
Definition: storage/referencevector.hh:59
value_type FieldType
Definition: storage/referencevector.hh:60
DynamicReferenceVector(const ThisType &other)
Copy constructor.
Definition: storage/referencevector.hh:74
void clear()
Definition: storage/referencevector.hh:160
DynamicReferenceVector(const A &a=A())
Constructor with uninitialized vector.
Definition: storage/referencevector.hh:64
size_type capacity() const
Definition: storage/referencevector.hh:116
DynamicReferenceVector(size_type n, const A &a=A())
Constructor with uninitialized vector of size n.
Definition: storage/referencevector.hh:69
void bind(size_type i, K &u)
Bind i-th entry to a reference.
Definition: storage/referencevector.hh:132
value_type & operator[](size_type i)
Definition: storage/referencevector.hh:150
K value_type
Definition: storage/referencevector.hh:32
container_type::size_type size_type
Definition: storage/referencevector.hh:33
std::vector< K *, typename A::template rebind< K * >::other > container_type
Definition: storage/referencevector.hh:30
Fem::DynamicReferenceVector< K, A > derived_type
Definition: storage/referencevector.hh:29
FieldTraits< K >::real_type real_type
Definition: storage/referencevector.hh:40
FieldTraits< K >::field_type field_type
Definition: storage/referencevector.hh:39