1#ifndef RAIIGRAPH_VECTOR_HPP
2#define RAIIGRAPH_VECTOR_HPP
7#include <initializer_list>
29 if (Ns_::init(&my_vector,
size)) {
30 throw std::runtime_error(
"failed to initialize igraph vector of size " + std::to_string(
size));
121 if (Ns_::copy(&my_vector, &(
other.my_vector))) {
122 throw std::runtime_error(
"failed to copy-construct integer igraph vector");
131 if (
this != &
other) {
132 if (Ns_::update(&my_vector, &(
other.my_vector))) {
133 throw std::runtime_error(
"failed to copy-assign integer igraph vector");
145 std::swap(my_vector,
other.my_vector);
153 if (
this != &
other) {
154 std::swap(my_vector,
other.my_vector);
163 Ns_::destroy(&my_vector);
171 return Ns_::empty(&my_vector);
178 return Ns_::size(&my_vector);
190 return my_vector.stor_end - my_vector.stor_begin;
197 Ns_::clear(&my_vector);
225 Ns_::shrink_to_fit(&my_vector);
240 template<
typename ...
Args>
250 Ns_::pop_back(&my_vector);
258 Ns_::remove(&my_vector,
pos -
begin());
268 auto start =
begin();
269 Ns_::remove_section(&my_vector,
first - start,
last - start);
291 template<
typename ...
Args>
386 return my_vector.stor_begin;
393 return my_vector.end;
414 return my_vector.stor_begin;
421 return my_vector.end;
428 return my_vector.stor_begin;
435 return my_vector.stor_begin;
442 return std::reverse_iterator(
end());
449 return std::reverse_iterator(
begin());
456 return std::reverse_iterator(
end());
463 return std::reverse_iterator(
begin());
470 return std::reverse_iterator(
cend());
477 return std::reverse_iterator(
cbegin());
521 std::swap(my_vector,
other.my_vector);
534 typedef igraph_integer_t value_type;
535 typedef igraph_vector_int_t igraph_type;
537#define RAIIGRAPH_VECTOR_SUFFIX _int
538#include "fragments/vector.hpp"
539#undef RAIIGRAPH_VECTOR_SUFFIX
543 typedef igraph_real_t value_type;
544 typedef igraph_vector_t igraph_type;
546#define RAIIGRAPH_VECTOR_SUFFIX
547#include "fragments/vector.hpp"
548#undef RAIIGRAPH_VECTOR_SUFFIX
552 typedef igraph_bool_t value_type;
553 typedef igraph_vector_bool_t igraph_type;
555#define RAIIGRAPH_VECTOR_SUFFIX _bool
556#include "fragments/vector.hpp"
557#undef RAIIGRAPH_VECTOR_SUFFIX
Wrapper around igraph_vector_*_t objects with RAII behavior.
Definition Vector.hpp:26
iterator erase(iterator pos)
Definition Vector.hpp:257
iterator insert(iterator pos, value_type val)
Definition Vector.hpp:279
const value_type * data() const
Definition Vector.hpp:434
Vector & operator=(Vector< Ns_ > &&other)
Definition Vector.hpp:152
const_reference operator[](igraph_integer_t i) const
Definition Vector.hpp:349
value_type * data()
Definition Vector.hpp:427
reference operator[](igraph_integer_t i)
Definition Vector.hpp:341
std::reverse_iterator< iterator > reverse_iterator
Definition Vector.hpp:78
iterator erase(iterator first, iterator last)
Definition Vector.hpp:267
iterator emplace(iterator pos, Args &&... args)
Definition Vector.hpp:292
iterator begin()
Definition Vector.hpp:385
reverse_const_iterator rend() const
Definition Vector.hpp:462
void reserve(size_type capacity)
Definition Vector.hpp:217
Vector< Ns_ > & operator=(const Vector< Ns_ > &other)
Definition Vector.hpp:130
Vector(Vector< Ns_ > &&other)
Definition Vector.hpp:143
const value_type & const_reference
Definition Vector.hpp:53
reverse_iterator rend()
Definition Vector.hpp:448
const igraph_type * get() const
Definition Vector.hpp:509
igraph_type * get()
Definition Vector.hpp:501
igraph_integer_t difference_type
Definition Vector.hpp:63
Vector(const Vector< Ns_ > &other)
Definition Vector.hpp:120
reverse_iterator rbegin()
Definition Vector.hpp:441
const_reference back() const
Definition Vector.hpp:363
std::reverse_iterator< const_iterator > reverse_const_iterator
Definition Vector.hpp:83
igraph_bool_t empty() const
Definition Vector.hpp:170
reverse_const_iterator rbegin() const
Definition Vector.hpp:455
const_reference front() const
Definition Vector.hpp:377
igraph_integer_t size_type
Definition Vector.hpp:58
reverse_const_iterator crend() const
Definition Vector.hpp:476
Ns_::value_type value_type
Definition Vector.hpp:43
void clear()
Definition Vector.hpp:196
~Vector()
Definition Vector.hpp:162
Vector()
Definition Vector.hpp:89
const_iterator begin() const
Definition Vector.hpp:399
iterator insert(iterator pos, size_type n, value_type val)
Definition Vector.hpp:304
void emplace_back(Args &&... args)
Definition Vector.hpp:241
iterator insert(iterator pos, InputIterator first, InputIterator last)
Definition Vector.hpp:324
void resize(size_type size, value_type val=value_type())
Definition Vector.hpp:205
const_iterator cbegin() const
Definition Vector.hpp:413
Vector(size_type size, const value_type &val=value_type())
Definition Vector.hpp:95
size_type capacity() const
Definition Vector.hpp:189
Ns_::igraph_type igraph_type
Definition Vector.hpp:38
void swap(Vector< Ns_ > &other)
Definition Vector.hpp:518
void pop_back()
Definition Vector.hpp:249
reference back()
Definition Vector.hpp:356
value_type * iterator
Definition Vector.hpp:68
reference front()
Definition Vector.hpp:370
iterator end()
Definition Vector.hpp:392
reverse_const_iterator crbegin() const
Definition Vector.hpp:469
size_type size() const
Definition Vector.hpp:177
void push_back(value_type val)
Definition Vector.hpp:232
value_type & reference
Definition Vector.hpp:48
Vector(igraph_type &&vector)
Definition Vector.hpp:103
void shrink_to_fit()
Definition Vector.hpp:224
Vector(InputIterator first, InputIterator last)
Definition Vector.hpp:111
const_iterator cend() const
Definition Vector.hpp:420
const value_type * const_iterator
Definition Vector.hpp:73
constexpr size_type max_size() const
Definition Vector.hpp:184
const_iterator end() const
Definition Vector.hpp:406
Error handling for raiigraph.
Utilities for manipulating igraph data structures in C++.
Definition error.hpp:11
Vector< internal::Integer > IntVector
Definition Vector.hpp:568
Vector< internal::Real > RealVector
Definition Vector.hpp:582
void check_code(igraph_error_t code)
Definition error.hpp:34
Vector< internal::Bool > BoolVector
Definition Vector.hpp:587