124:a7b769a0e537 | 125:85814c0918c5 |
---|---|
27 */ | 27 */ |
28 | 28 |
29 #ifndef BOTC_LIST_H | 29 #ifndef BOTC_LIST_H |
30 #define BOTC_LIST_H | 30 #define BOTC_LIST_H |
31 | 31 |
32 #include <cassert> | 32 #include "macros.h" |
33 #include <algorithm> | 33 #include <algorithm> |
34 #include <deque> | 34 #include <deque> |
35 #include <initializer_list> | 35 #include <initializer_list> |
36 | 36 |
37 template<typename T> | 37 template<typename T> |
153 } | 153 } |
154 | 154 |
155 template<typename T> | 155 template<typename T> |
156 void List<T>::removeAt (int pos) | 156 void List<T>::removeAt (int pos) |
157 { | 157 { |
158 assert (pos < size()); | 158 ASSERT_LT (pos, size()); |
159 _deque.erase (_deque.begin() + pos); | 159 _deque.erase (_deque.begin() + pos); |
160 } | 160 } |
161 | 161 |
162 template<typename T> | 162 template<typename T> |
163 inline T& List<T>::prepend (const T& value) | 163 inline T& List<T>::prepend (const T& value) |
239 } | 239 } |
240 | 240 |
241 template<typename T> | 241 template<typename T> |
242 inline T& List<T>::operator[] (int n) | 242 inline T& List<T>::operator[] (int n) |
243 { | 243 { |
244 assert (n < size()); | 244 ASSERT_LT (n, size()); |
245 return _deque[n]; | 245 return _deque[n]; |
246 } | 246 } |
247 | 247 |
248 template<typename T> | 248 template<typename T> |
249 inline const T& List<T>::operator[] (int n) const | 249 inline const T& List<T>::operator[] (int n) const |
250 { | 250 { |
251 assert (n < size()); | 251 ASSERT_LT (n, size()); |
252 return _deque[n]; | 252 return _deque[n]; |
253 } | 253 } |
254 | 254 |
255 template<typename T> | 255 template<typename T> |
256 inline void List<T>::resize (int size) | 256 inline void List<T>::resize (int size) |
291 } | 291 } |
292 | 292 |
293 template<typename T> | 293 template<typename T> |
294 List<T> List<T>::splice (int a, int b) const | 294 List<T> List<T>::splice (int a, int b) const |
295 { | 295 { |
296 assert (a >= 0 && b >= 0 && a < size() && b < size() && a <= b); | 296 ASSERT_RANGE (a, 0, size() - 1) |
297 ASSERT_RANGE (b, 0, size() - 1) | |
298 ASSERT_LT_EQ (a, b) | |
297 List<T> result; | 299 List<T> result; |
298 | 300 |
299 for (int i = a; i <= b; ++i) | 301 for (int i = a; i <= b; ++i) |
300 result << operator[] (i); | 302 result << operator[] (i); |
301 | 303 |