46 vector(): _data(NULL), _capacity(0), _size(0)
50 vector(
size_t n): _data(NULL), _capacity(0), _size(0)
56 vector(
size_t n,
const T val): _data(NULL), _capacity(0), _size(0)
97 inline const T*
data()
const 128 inline const T*
end()
const 130 return _data + _size;
136 return _data + _size;
146 return _data[_size - 1];
156 return _data[_size - 1];
160 template<
class InputIterator>
161 inline void assign(InputIterator s, InputIterator e)
167 if ( ((
long int)_capacity) < n) {
184 inline void assign(
size_t n, T val = T()) {
186 if(_size > 0)
delete [] _data;
191 for (
size_t i = 0; i < n; i++) _data[i] = val;
201 inline void assign(
size_t n, T* array,
bool del) {
202 if (del)
delete [] _data;
216 for (
size_t i = 0; i < _size; i++) _data[i] = buf[i];
228 inline void resize(
size_t n,
const T val)
230 size_t oldsize = this->
size();
234 T* out = _data + oldsize;
235 size_t num = n - oldsize;
237 for (
size_t i = 0; i < num; i++) out[i] = val;
243 size_t osize = _size;
250 if(_size != 0) memset(_data, 0, _size *
sizeof(T));
261 _data =
new T[_size];
262 for (
size_t i = 0; i < _size; i++) _data[i] = buf[i];
267 template<
class InputIterator>
268 inline void append(InputIterator s, InputIterator e)
271 size_t oldsize = _size;
273 this->
resize(oldsize + addsize);
278 _data[oldsize + idx++] = *s;
285 if(_capacity > _size)
293 size_t newcap = _capacity > 0 ? _capacity * 2 : 1;
294 size_t cursize = _size;
296 _data[cursize] = val;
299 return _data[_size-1];
314 for(
size_t i=0; i<cnt.
size(); i++) dsp[i+1] = dsp[i] + cnt[i];
322 for(
size_t i=0; i<dsp.
size()-1; i++) cnt[i] = dsp[i+1] - dsp[i];
331 template<
class T,
class S>
335 for(
size_t i=0; i<data.
size(); i++) cnt[data[i]]++;
343 for(
size_t i=0; i<vec.
size(); i++) sum += vec[i];
353 for(
size_t i=0; i<vec.
size(); i++) vec[i] = start + i;
361 loc_sizes.
assign(
size_t(num_parts), T(gsize/num_parts));
364 for(
size_t i=0; i<size_t(gsize % num_parts); i++) loc_sizes[i]++;
370 template<
class S,
class V>
373 for(
size_t i=0; i<
size; i++) lhs[i] = (S)rhs[i];
381 for(
size_t i=0; i<v.
size(); i++)
382 if(v[i] != T(0)) {ret =
false;
break;}
vector(size_t n)
Initialize a vector of size n.
void resize(size_t n, const T val)
Resize a vector setting the newly allocated elements to val.
size_t capacity() const
The maximum amount of entries the vector can hold without reallocating.
void assign(size_t n, T val=T())
Assign n many elements of value val.
void interval(vector< T > &vec, size_t start, size_t end)
Create an integer interval between start and end.
void divide(const size_t gsize, const size_t num_parts, vector< T > &loc_sizes)
divide gsize into num_parts local parts with even distribution of the remainder
void count(const vector< T > &data, vector< S > &cnt)
Count number of occurrences of indices.
T * data()
Pointer to the vector's start.
vector(const vector< T > &vec)
Initialize a vector from another vector.
T * end()
Pointer to the vector's end.
const T * end() const
Pointer to the vector's end.
T & operator[](size_t i)
Vector access.
double distance(const Point &a, const Point &b)
void cnt_from_dsp(const vector< T > &dsp, vector< T > &cnt)
Compute counts from displacements.
void assign(size_t n, T *array, bool del)
Make a vector point to an existing array.
bool isEmpty(vector< T > &v)
Return whether an vector is empty (all values are 0).
const T * data() const
Pointer to the vector's start.
const T & operator[](size_t i) const
Vector access.
T sum(const vector< T > &vec)
Compute sum of a vector's entries.
size_t size() const
The current size of the vector.
A vector storing arbitrary data.
vector()
Initialize an empty vector.
const T * begin() const
Pointer to the vector's start.
T * begin()
Pointer to the vector's start.
void assign(InputIterator s, InputIterator e)
Assign a memory range.
void vec_assign(S *lhs, const V *rhs, size_t size)
Assign the values in rhs to lhs. The data-type of rhs is cast to the type of lhs. ...
vector(size_t n, const T val)
Initialize a vector of size n and of constant value val.
void operator=(const vector< T > &vec)
Deep copy of a vector.
void resize(size_t n)
Resize a vector.
void append(InputIterator s, InputIterator e)
Append data to the current data chunk.
void dsp_from_cnt(const vector< T > &cnt, vector< T > &dsp)
Compute displacements from counts.