37 ::operator
delete(start);
69 const void* first,
const size_t n);
81 const size_t n = position - start;
82 if (finish != end_of_storage && position == finish) {
85 insert_aux(position, x);
93 if (finish != end_of_storage)
96 insert_aux(finish, x);
111 template<>
inline void
115 if (positions.
size() == 0)
120 while (pos != lastpos)
121 operator[](*pos++) = *val++;
127 if (positions.
size() != values.
size())
128 throw BCP_fatal_error(
"BCP_vec::update() called with unequal sizes.\n");
130 unchecked_update(positions, values);
143 const size_t len = last - first;
144 std::memmove(start, first, len *
sizeof(
short));
145 finish = start + len;
166 if (position + 1 != finish)
167 std::memmove(position, position + 1, ((finish-position) - 1) *
sizeof(
short));
173 if (first != last && last != finish)
174 std::memmove(first, last, (finish - last) *
sizeof(
short));
175 finish -= (last - first);
void deallocate()
Destroy the entries in the vector and free the memory allocated for the vector.
void insert_aux(iterator position, const_reference x)
insert x into the given position in the vector.
pos
position where the operator should be printed when printing the expression
const T & const_reference
iterator begin()
Return an iterator to the beginning of the object.
void unchecked_update(const BCP_vec< int > &positions, const BCP_vec< T > &values)
Same as the previous method but without sanity checks.
void reserve(const size_t n)
Reallocate the object to make space for n entries.
void push_back(const_reference x)
Append x to the end of the vector.
BCP_vec< T > & operator=(const BCP_vec< T > &x)
Copy the contents of x into the object and return a reference the the object itself.
void construct(iterator pos)
void erase(iterator pos)
Erase the entry pointed to by pos.
void pop_back()
Delete the last entry.
void update(const BCP_vec< int > &positions, const BCP_vec< T > &values)
Update those entries listed in positions to the given values.
void destroy_range(iterator first, iterator last)
BCP_vec()
The default constructor initializes the data members as 0 pointers.
void insert(iterator position, const void *first, const size_t num)
Insert num entries starting from memory location first into the vector from position pos...
void BCP_vec_sanity_check(BCP_vec< int >::const_iterator firstpos, BCP_vec< int >::const_iterator lastpos, const int maxsize)
A helper function to test whether a set positions is sane for a vector.
Currently there isn't any error handling in BCP.
size_t size() const
Return the current number of entries.
iterator end()
Return an iterator to the end of the object.
The class BCP_vec serves the same purpose as the vector class in the standard template library...
void unchecked_push_back(const_reference x)
Append x to the end of the vector.
void keep(iterator pos)
Keep only the entry pointed to by pos.
void assign(const void *x, const size_t num)
Copy num entries of type T starting at the memory location x into the object.
void fint fint fint real fint real * x
void destroy(iterator pos)