Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <deque>
- #include <cstdlib>
- template<typename T>
- class WeakRefList {
- std::deque<T*> storage;
- public:
- class iterator_type {
- typename std::deque<T*>::iterator_type internal_iterator;
- public:
- iterator_type(typename std::deque<T*>::iterator_type it) :internal_iterator(it) {}
- T &operator*() {
- return **internal_iterator;
- }
- iterator_type operator++(int) {
- iterator_type copy(*this);
- ++internal_iterator;
- return copy;
- }
- iterator_type &operator++() {
- ++internal_iterator;
- return *this;
- }
- T *operator->() {
- return *internal_iterator;
- }
- };
- iterator_type begin() {
- return iterator_type(storage.begin());
- }
- iterator_type end() {
- return iterator_type(storage.end());
- }
- void push_back(T &elem) { storage.push_back(&elem); }
- void push_front(T &elem) { storage.push_front(&elem); }
- T &at(size_t i) { return *storage.at(i); }
- T &operator[](size_t i) { return *storage[i]; }
- void pop_back() { storage.pop_back(); }
- void pop_front() { storage.pop_front(); }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement