DGtal 1.4.0
Loading...
Searching...
No Matches
DGtal::detail::SetFunctionsImpl< Container, false, true > Struct Template Reference

#include <DGtal/base/SetFunctions.h>

Static Public Member Functions

static bool isEqual (const Container &S1, const Container &S2)
 
static bool isSubset (const Container &S1, const Container &S2)
 
static Container & assignDifference (Container &S1, const Container &S2)
 
static Container & assignUnion (Container &S1, const Container &S2)
 
static Container & assignIntersection (Container &S1, const Container &S2)
 
static Container & assignSymmetricDifference (Container &S1, const Container &S2)
 

Detailed Description

template<typename Container>
struct DGtal::detail::SetFunctionsImpl< Container, false, true >

Specialization for non-associative, ordered containers. Could be a sorted std::vector or std::list.

Definition at line 646 of file SetFunctions.h.

Member Function Documentation

◆ assignDifference()

template<typename Container >
static Container & DGtal::detail::SetFunctionsImpl< Container, false, true >::assignDifference ( Container & S1,
const Container & S2 )
inlinestatic

Updates the set S1 as S1 - S2. This version uses the fact that the container is ordered.

Parameters
[in,out]S1an input set, S1 - S2 as output.
[in]S2another input set.

Definition at line 691 of file SetFunctions.h.

692 {
693 typedef ComparatorAdapter< Container, false, true, false >
694 CompAdapter;
695
696 Container S;
697 std::swap( S, S1 );
698 std::set_difference( S.begin(), S.end(), S2.begin(), S2.end(),
699 std::inserter( S1, S1.end() ),
700 CompAdapter::less( S1 ) );
701 return S1;
702 }

◆ assignIntersection()

template<typename Container >
static Container & DGtal::detail::SetFunctionsImpl< Container, false, true >::assignIntersection ( Container & S1,
const Container & S2 )
inlinestatic

Updates the set S1 as \( S1 \cap S2 \). This version uses the fact that the container is ordered.

Parameters
[in,out]S1an input set, \( S1 \cap S2 \) as output.
[in]S2another input set.

Definition at line 729 of file SetFunctions.h.

730 {
731 typedef ComparatorAdapter< Container, false, true, false >
732 CompAdapter;
733
734 Container S;
735 std::swap( S, S1 );
736 std::set_intersection( S.begin(), S.end(), S2.begin(), S2.end(),
737 std::inserter( S1, S1.end() ),
738 CompAdapter::less( S1 ) );
739 return S1;
740 }

◆ assignSymmetricDifference()

template<typename Container >
static Container & DGtal::detail::SetFunctionsImpl< Container, false, true >::assignSymmetricDifference ( Container & S1,
const Container & S2 )
inlinestatic

Updates the set S1 as \( S1 \Delta S2 \). This version uses the fact that the container is ordered.

Parameters
[in,out]S1an input set, \( S1 \Delta S2 \) as output.
[in]S2another input set.

Definition at line 748 of file SetFunctions.h.

749 {
750 typedef ComparatorAdapter< Container, false, true, false >
751 CompAdapter;
752
753 Container S;
754 std::swap( S, S1 );
755 std::set_symmetric_difference( S.begin(), S.end(), S2.begin(), S2.end(),
756 std::inserter( S1, S1.end() ),
757 CompAdapter::less( S1 ) );
758 return S1;
759 }

◆ assignUnion()

template<typename Container >
static Container & DGtal::detail::SetFunctionsImpl< Container, false, true >::assignUnion ( Container & S1,
const Container & S2 )
inlinestatic

Updates the set S1 as \( S1 \cup S2 \). This version uses the fact that the container is ordered.

Parameters
[in,out]S1an input set, \( S1 \cup S2 \) as output.
[in]S2another input set.

Definition at line 710 of file SetFunctions.h.

711 {
712 typedef ComparatorAdapter< Container, false, true, false >
713 CompAdapter;
714
715 Container S;
716 std::swap( S, S1 );
717 std::set_union( S.begin(), S.end(), S2.begin(), S2.end(),
718 std::inserter( S1, S1.end() ),
719 CompAdapter::less( S1 ) );
720 return S1;
721 }

◆ isEqual()

template<typename Container >
static bool DGtal::detail::SetFunctionsImpl< Container, false, true >::isEqual ( const Container & S1,
const Container & S2 )
inlinestatic

Equality test. This version uses the fact that the container is ordered.

Parameters
[in]S1an input set.
[in]S2another input set.
Returns
true iff S1 is equal to S2 (seen as sets).

Definition at line 655 of file SetFunctions.h.

656 {
657 typedef ComparatorAdapter< Container, false, true, false >
658 CompAdapter;
659
660 // Checks size first.
661 if ( S1.size() != S2.size() ) return false;
662 return std::equal( S1.begin(), S1.end(), S2.begin(),
663 CompAdapter::equal_to( S1 ) );
664 }

◆ isSubset()

template<typename Container >
static bool DGtal::detail::SetFunctionsImpl< Container, false, true >::isSubset ( const Container & S1,
const Container & S2 )
inlinestatic

Inclusion test. This version uses the fact that the container is ordered.

Parameters
[in]S1an input set.
[in]S2another input set.
Returns
true iff S1 is a subset of S2.

Definition at line 674 of file SetFunctions.h.

675 {
676 typedef ComparatorAdapter< Container, false, true, false >
677 CompAdapter;
678
679 // Checks size first.
680 if ( S1.size() > S2.size() ) return false;
681 return std::includes( S2.begin(), S2.end(), S1.begin(), S1.end(),
682 CompAdapter::less( S1 ) );
683 }

The documentation for this struct was generated from the following file: