1 #ifndef CPPAD_CG_SMART_CONTAINERS_INCLUDED 2 #define CPPAD_CG_SMART_CONTAINERS_INCLUDED 26 class SmartVectorPointer {
28 using iterator =
typename std::vector<Base*>::iterator;
29 using const_iterator =
typename std::vector<Base*>::const_iterator;
30 using reverse_iterator =
typename std::vector<Base*>::reverse_iterator;
31 using const_reverse_iterator =
typename std::vector<Base*>::const_reverse_iterator;
34 inline SmartVectorPointer() {
37 inline SmartVectorPointer(
size_t size) :
41 inline SmartVectorPointer(std::vector<Base*>& v_) {
45 inline size_t size()
const {
49 inline bool empty()
const {
53 inline void reserve(
size_t n) {
57 inline void push_back(Base* x) {
61 inline Base* operator[](
size_t n)
const {
65 inline Base*& operator[](
size_t n) {
69 inline iterator begin() {
73 inline const_iterator begin()
const {
77 inline iterator end() {
81 inline const_iterator end()
const {
85 inline reverse_iterator rbegin() {
89 inline const_reverse_iterator rbegin()
const {
93 inline reverse_iterator rend() {
97 inline const_reverse_iterator rend()
const {
101 inline std::vector<Base*> release() {
102 std::vector<Base*> v2;
107 inline virtual ~SmartVectorPointer() {
108 for (
size_t i = 0; i < v.size(); i++) {
121 using iterator =
typename std::set<Base*>::iterator;
131 inline size_t size()
const {
135 inline bool empty()
const {
139 inline iterator begin()
const {
143 inline iterator end()
const {
147 inline std::pair<iterator, bool> insert(Base* x) {
151 inline void erase(iterator pos) {
155 inline size_t erase(Base* x) {
159 inline std::set<Base*> release() {
166 typename std::set<Base*>::const_iterator it;
167 for (it = s.begin(); it != s.end(); ++it) {
180 using iterator =
typename std::list<Base*>::iterator;
181 using const_iterator =
typename std::list<Base*>::const_iterator;
191 inline size_t size()
const {
195 inline bool empty()
const {
199 inline void push_front(Base* x) {
203 inline void pop_front() {
207 inline void push_back(Base* x) {
211 inline void pop_back() {
215 inline iterator begin() {
219 inline const_iterator begin()
const {
223 inline iterator end() {
227 inline const_iterator end()
const {
231 inline std::list<Base*> release() {
238 typename std::list<Base*>::const_iterator it;
239 for (it = l.begin(); it != l.end(); ++it) {
245 template<
class Key,
class Value>
248 using iterator =
typename std::map<Key, Value*>::iterator;
249 using const_iterator =
typename std::map<Key, Value*>::const_iterator;
250 using reverse_iterator =
typename std::map<Key, Value*>::reverse_iterator;
251 using const_reverse_iterator =
typename std::map<Key, Value*>::const_reverse_iterator;
252 std::map<Key, Value*> m;
254 inline size_t size()
const {
258 inline bool empty()
const {
262 inline iterator begin() {
266 inline const_iterator begin()
const {
270 inline iterator end() {
274 inline const_iterator end()
const {
278 inline reverse_iterator rbegin() {
282 inline const_reverse_iterator rbegin()
const {
286 inline reverse_iterator rend() {
290 inline const_reverse_iterator rend()
const {
294 inline Value*& operator[](
const Key& key) {
298 std::map<Key, Value*> release() {
299 std::map<Key, Value*> m2;
305 typename std::map<Key, Value*>::const_iterator it;
306 for (it = m.begin(); it != m.end(); ++it) {