15 #ifndef BORNAGAIN_BASE_TYPES_SAFEPOINTERVECTOR_H
16 #define BORNAGAIN_BASE_TYPES_SAFEPOINTERVECTOR_H
29 typedef typename std::vector<T*>::iterator iterator;
30 typedef typename std::vector<T*>::const_iterator const_iterator;
38 size_t size()
const {
return m_pointers.size(); }
39 bool empty()
const {
return m_pointers.empty(); }
40 void push_back(T* pointer) { m_pointers.push_back(pointer); }
41 T* operator[](
size_t index) {
return m_pointers[index]; }
42 const T* operator[](
size_t index)
const {
return m_pointers[index]; }
43 iterator begin() {
return m_pointers.begin(); }
44 const_iterator begin()
const {
return m_pointers.begin(); }
45 iterator end() {
return m_pointers.end(); }
46 const_iterator end()
const {
return m_pointers.end(); }
48 bool deleteElement(T* pointer);
50 T* back() {
return m_pointers.back(); }
51 const T* back()
const {
return m_pointers.back(); }
55 std::vector<T*> m_pointers;
60 for (const_iterator it = other.begin(); it != other.end(); ++it)
61 m_pointers.push_back((*it)->clone());
75 for (const_iterator it = right.begin(); it != right.end(); ++it)
76 m_pointers.push_back((*it)->clone());
84 m_pointers = std::move(right.m_pointers);
85 right.m_pointers.clear();
91 iterator it = std::find(m_pointers.begin(), m_pointers.end(), pointer);
92 if (it == m_pointers.end())
101 for (iterator it = begin(); it != end(); ++it)
A vector of pointers, owned by *this, with methods to handle them safely.