ARGoS
3
A parallel, multi-engine simulator for swarm robotics
|
Go to the documentation of this file.
38 template<
class CONTAINED_TYPE,
class REFERENCED_TYPE>
159 if(! c_set.
empty()) {
162 m_unSize = c_set.m_unSize;
168 m_psLast = m_psFirst;
180 while(psCurElemOnOther != NULL) {
184 psLastElemOnThis->
Next = psCurElemOnThis;
186 psLastElemOnThis = psCurElemOnThis;
188 psCurElemOnOther = psCurElemOnOther->
Next;
191 m_psLast = psCurElemOnThis;
203 return m_unSize == 0;
215 return m_psFirst->Data;
219 return m_psFirst->Data;
223 return m_psLast->Data;
227 return m_psLast->Data;
240 m_psLast = m_psFirst;
248 while(psNextElem != NULL &&
249 psNextElem->
Data < t_element) {
250 psNextElem = psNextElem->
Next;
253 if(psNextElem == NULL) {
256 m_psLast->Next = psNewElem;
257 m_psLast = psNewElem;
262 if(psNextElem->
Data == t_element) {
267 if(psNextElem == m_psFirst) {
270 m_psFirst->Previous = psNewElem;
271 m_psFirst = psNewElem;
277 psNextElem->
Previous->Next = psNewElem;
296 if(m_psFirst->Data == t_element) {
313 if(psElem == m_psFirst) {
315 m_psFirst = m_psFirst->Next;
316 m_psFirst->Previous = NULL;
322 if(psElem == m_psLast) {
324 m_psLast = m_psLast->Previous;
325 m_psLast->Next = NULL;
363 while(psCurElem != NULL) {
365 psCurElem = psNextElem;
366 if(psCurElem != NULL) {
367 psNextElem = psNextElem->
Next;
381 return find_impl(t_element) != NULL;
405 return iterator(find_impl(t_element));
411 if(m_psFirst == NULL) {
414 SSetElement<T>* psElem = m_psFirst;
415 while(psElem != NULL &&
416 psElem->Data < t_element) {
417 psElem = psElem->Next;
423 return (psElem->Data == t_element) ? psElem : NULL;
429 SSetElement<T>* m_psFirst;
430 SSetElement<T>* m_psLast;
bool operator==(const CSetIterator &c_it)
REFERENCED_TYPE * pointer
SSetElement< CONTAINED_TYPE > * m_psElem
REFERENCED_TYPE & reference
The namespace containing all the ARGoS related code.
The data container of CSet.
void erase(iterator &c_it)
Removes the passed element from the list.
size_t size() const
Returns the number of elements in the list.
const_iterator & operator=(const iterator &c_it)
void erase(const T &t_element)
Removes the passed element from the list.
void clear()
Erases the contents of the list.
CSet(const CSet &c_set)
Class copy constructor.
bool exists(const T &t_element)
Returns true if the given element is in the list.
iterator end() const
Returns an invalid iterator.
CSetIterator & operator=(const CSetIterator &c_it)
std::forward_iterator_tag iterator_category
bool operator!=(const CSetIterator &c_it)
iterator find(const T &t_element)
Searches for an element in the list.
void insert(const T &t_element)
Inserts an element to the list.
bool empty() const
Returns true if the list is empty.
CSetIterator< T, T > iterator
std::ptrdiff_t difference_type
iterator begin() const
Returns an iterator to the first element.
REFERENCED_TYPE value_type
const_iterator(const iterator &c_it)
CSetIterator & operator++()
bool operator==(const iterator &c_it)
bool operator!=(const iterator &c_it)
SSetElement(const T &t_data, SSetElement *ps_prev=NULL, SSetElement *ps_next=NULL)
CSetIterator(const CSetIterator &c_it)
CSet & operator=(const CSet &c_set)
Assignment operator.
Defines a very simple double-linked list that stores unique elements.
CSetIterator(SSetElement< CONTAINED_TYPE > *ps_elem=NULL)