10 #include "dreal/util/assert.h" 18 typedef std::vector<T> vector;
19 typedef typename vector::value_type value_type;
20 typedef typename vector::iterator iterator;
21 typedef typename vector::const_iterator const_iterator;
22 typedef typename vector::reverse_iterator reverse_iterator;
23 typedef typename vector::const_reverse_iterator const_reverse_iterator;
24 typedef typename vector::size_type size_type;
25 typedef typename vector::reference reference;
26 typedef typename vector::const_reference const_reference;
35 iterator begin() {
return vector_.begin(); }
36 iterator end() {
return vector_.end(); }
37 const_iterator begin()
const {
return vector_.cbegin(); }
38 const_iterator end()
const {
return vector_.cend(); }
39 const_iterator cbegin()
const {
return vector_.cbegin(); }
40 const_iterator cend()
const {
return vector_.cend(); }
41 reverse_iterator rbegin() {
return vector_.rbegin(); }
42 reverse_iterator rend() {
return vector_.rend(); }
43 const_reverse_iterator rbegin()
const {
return vector_.crbegin(); }
44 const_reverse_iterator rend()
const {
return vector_.crend(); }
45 const_reverse_iterator crbegin()
const {
return vector_.crbegin(); }
46 const_reverse_iterator crend()
const {
return vector_.crend(); }
48 void push_back(value_type
const& v) { vector_.push_back(v); }
49 void push_back(value_type&& v) { vector_.push_back(std::move(v)); }
50 void push() { scopes_.push_back(vector_.size()); }
52 if (scopes_.empty()) {
53 throw std::runtime_error(
"Nothing to pop.");
56 size_t const prev_size = scopes_.back();
58 size_t cur_size = vector_.size();
59 while (cur_size-- > prev_size) {
66 bool empty()
const {
return vector_.empty(); }
67 size_t size()
const {
return vector_.size(); }
68 vector
const& get_vector()
const {
return vector_; }
69 vector get_vector() {
return vector_; }
72 DREAL_ASSERT(!vector_.empty());
75 const_reference first()
const {
76 DREAL_ASSERT(!vector_.empty());
80 DREAL_ASSERT(!vector_.empty());
81 return vector_[size() - 1];
83 const_reference last()
const {
84 DREAL_ASSERT(!vector_.empty());
85 return vector_[size() - 1];
87 reference operator[](size_type n) {
return vector_[n]; }
88 const_reference operator[](size_type n)
const {
return vector_[n]; }
89 bool operator<(ScopedVector<T>
const& v)
const {
90 for (
size_t i = 0; i < vector_.size(); i++) {
91 if (vector_[i] < v.vector_[i]) {
97 vector get_reverse()
const {
99 std::reverse(tmp.begin(), tmp.end());
103 friend std::ostream& operator<<(std::ostream& os, ScopedVector<T>
const& v) {
104 for (
auto const& e : v) {
105 os << e << std::endl;
112 std::vector<size_t> scopes_;
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
Definition: scoped_vector.h:16