31 vector(): _data(NULL), _capacity(0), _size(0)
35 vector(
size_t n): _data(NULL), _capacity(0), _size(0)
41 vector(
size_t n,
const T val): _data(NULL), _capacity(0), _size(0)
82 inline const T*
data()
const
113 inline const T*
end()
const
115 return _data + _size;
121 return _data + _size;
131 return _data[_size - 1];
141 return _data[_size - 1];
145 template<
class InputIterator>
146 inline void assign(InputIterator s, InputIterator e)
152 if ( ((
long int)_capacity) < n) {
169 inline void assign(
size_t n, T val = T()) {
171 if(_size > 0)
delete [] _data;
176 for (
size_t i = 0; i < n; i++) _data[i] = val;
186 inline void assign(
size_t n, T* array,
bool del) {
187 if (del)
delete [] _data;
201 for (
size_t i = 0; i < _size; i++) _data[i] = buf[i];
213 inline void resize(
size_t n,
const T val)
215 size_t oldsize = this->
size();
219 T* out = _data + oldsize;
220 size_t num = n - oldsize;
222 for (
size_t i = 0; i < num; i++) out[i] = val;
228 size_t osize = _size;
235 if(_size != 0) memset(_data, 0, _size *
sizeof(T));
246 _data =
new T[_size];
247 for (
size_t i = 0; i < _size; i++) _data[i] = buf[i];
252 template<
class InputIterator>
253 inline void append(InputIterator s, InputIterator e)
256 size_t oldsize = _size;
258 this->
resize(oldsize + addsize);
263 _data[oldsize + idx++] = *s;
270 if(_capacity > _size)
278 size_t newcap = _capacity > 0 ? _capacity * 2 : 1;
279 size_t cursize = _size;
281 _data[cursize] = val;
284 return _data[_size-1];
299 for(
size_t i=0; i<cnt.
size(); i++) dsp[i+1] = dsp[i] + cnt[i];
307 for(
size_t i=0; i<dsp.
size()-1; i++) cnt[i] = dsp[i+1] - dsp[i];
316 template<
class T,
class S>
320 for(
size_t i=0; i<data.
size(); i++) cnt[data[i]]++;
328 for(
size_t i=0; i<vec.
size(); i++)
sum += vec[i];
338 for(
size_t i=0; i<vec.
size(); i++) vec[i] = start + i;
346 loc_sizes.
assign(
size_t(num_parts), T(gsize/num_parts));
349 for(
size_t i=0; i<size_t(gsize % num_parts); i++) loc_sizes[i]++;
355 template<
class S,
class V>
358 for(
size_t i=0; i<size; i++) lhs[i] = (S)rhs[i];
366 for(
size_t i=0; i<v.
size(); i++)
367 if(v[i] != T(0)) {ret =
false;
break;}
A vector storing arbitrary data.
T & operator[](size_t i)
Vector access.
vector()
Initialize an empty vector.
vector(const vector< T > &vec)
Initialize a vector from another vector.
size_t size() const
The current size of the vector.
void assign(size_t n, T *array, bool del)
Make a vector point to an existing array.
void resize(size_t n)
Resize a vector.
const T & operator[](size_t i) const
Vector access.
size_t capacity() const
The maximum amount of entries the vector can hold without reallocating.
const T * end() const
Pointer to the vector's end.
const T * data() const
Pointer to the vector's start.
void append(InputIterator s, InputIterator e)
Append data to the current data chunk.
void assign(InputIterator s, InputIterator e)
Assign a memory range.
vector(size_t n)
Initialize a vector of size n.
T * begin()
Pointer to the vector's start.
void assign(size_t n, T val=T())
Assign n many elements of value val.
T * end()
Pointer to the vector's end.
void resize(size_t n, const T val)
Resize a vector setting the newly allocated elements to val.
const T * begin() const
Pointer to the vector's start.
T * data()
Pointer to the vector's start.
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 cnt_from_dsp(const vector< T > &dsp, vector< T > &cnt)
Compute counts from displacements.
void dsp_from_cnt(const vector< T > &cnt, vector< T > &dsp)
Compute displacements from counts.
void interval(vector< T > &vec, size_t start, size_t end)
Create an integer interval between start and end.
T sum(const vector< T > &vec)
Compute sum of a vector's entries.
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.
bool isEmpty(vector< T > &v)
Return whether an vector is empty (all values are 0).
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.
double distance(const Point &a, const Point &b)