set_assign.h File Reference


Detailed Description

Definition of template functions set_assign_union and set_assign_difference.

Version:
1.5, 2004/07/26
Author:
Wu Yongwei

Definition in file set_assign.h.

#include <algorithm>

Go to the source code of this file.

Functions

template<class _Container, class _InputIter, class _Compare>
_Container & set_assign_difference (_Container &__dest, _InputIter __first, _InputIter __last, _Compare __comp)
template<class _Container, class _InputIter>
_Container & set_assign_difference (_Container &__dest, _InputIter __first, _InputIter __last)
template<class _Container, class _InputIter, class _Compare>
_Container & set_assign_union (_Container &__dest, _InputIter __first, _InputIter __last, _Compare __comp)
template<class _Container, class _InputIter>
_Container & set_assign_union (_Container &__dest, _InputIter __first, _InputIter __last)


Function Documentation

template<class _Container, class _InputIter, class _Compare>
_Container& set_assign_difference ( _Container &  __dest,
_InputIter  __first,
_InputIter  __last,
_Compare  __comp 
) [inline]

Definition at line 122 of file set_assign.h.

00126 {
00127     typename _Container::iterator __first_dest = __dest.begin();
00128     typename _Container::iterator  __last_dest = __dest.end();
00129     while (__first_dest != __last_dest && __first != __last)
00130     {
00131         if (__comp(*__first_dest, *__first))
00132             ++__first_dest;
00133         else if (__comp(*__first, *__first_dest))
00134             ++__first;
00135         else    // *__first_dest is equivalent to *__first
00136         {
00137             __dest.erase(__first_dest++);
00138             ++__first;
00139         }
00140     }
00141     return __dest;
00142 }

template<class _Container, class _InputIter>
_Container& set_assign_difference ( _Container &  __dest,
_InputIter  __first,
_InputIter  __last 
) [inline]

Definition at line 100 of file set_assign.h.

00103 {
00104     typename _Container::iterator __first_dest = __dest.begin();
00105     typename _Container::iterator  __last_dest = __dest.end();
00106     while (__first_dest != __last_dest && __first != __last)
00107     {
00108         if (*__first_dest < *__first)
00109             ++__first_dest;
00110         else if (*__first < *__first_dest)
00111             ++__first;
00112         else    // *__first_dest == *__first
00113         {
00114             __dest.erase(__first_dest++);
00115             ++__first;
00116         }
00117     }
00118     return __dest;
00119 }

template<class _Container, class _InputIter, class _Compare>
_Container& set_assign_union ( _Container &  __dest,
_InputIter  __first,
_InputIter  __last,
_Compare  __comp 
) [inline]

Definition at line 72 of file set_assign.h.

00076 {
00077     typename _Container::iterator __first_dest = __dest.begin();
00078     typename _Container::iterator  __last_dest = __dest.end();
00079     while (__first_dest != __last_dest && __first != __last)
00080     {
00081         if (__comp(*__first_dest, *__first))
00082             ++__first_dest;
00083         else if (__comp(*__first, *__first_dest))
00084         {
00085             __dest.insert(__first_dest, *__first);
00086             ++__first;
00087         }
00088         else    // *__first_dest is equivalent to *__first
00089         {
00090             ++__first_dest;
00091             ++__first;
00092         }
00093     }
00094     if (__first != __last)
00095         std::copy(__first, __last, inserter(__dest, __last_dest));
00096     return __dest;
00097 }

template<class _Container, class _InputIter>
_Container& set_assign_union ( _Container &  __dest,
_InputIter  __first,
_InputIter  __last 
) [inline]

Definition at line 45 of file set_assign.h.

00048 {
00049     typename _Container::iterator __first_dest = __dest.begin();
00050     typename _Container::iterator  __last_dest = __dest.end();
00051     while (__first_dest != __last_dest && __first != __last)
00052     {
00053         if (*__first_dest < *__first)
00054             ++__first_dest;
00055         else if (*__first < *__first_dest)
00056         {
00057             __dest.insert(__first_dest, *__first);
00058             ++__first;
00059         }
00060         else    // *__first_dest == *__first
00061         {
00062             ++__first_dest;
00063             ++__first;
00064         }
00065     }
00066     if (__first != __last)
00067         std::copy(__first, __last, inserter(__dest, __last_dest));
00068     return __dest;
00069 }


Generated on Wed May 5 00:06:39 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6