コード例 #1
0
ファイル: Part.cpp プロジェクト: abhishek4747/trilinos
void sort_and_unique( PartVector & partVector )
{
    PartVector::iterator begin = partVector.begin();
    PartVector::iterator end = partVector.end();
    std::sort( begin , end , PartLess() );
    PartVector::iterator new_end = std::unique( begin , end );
    partVector.erase( new_end , end );
}
コード例 #2
0
ファイル: Part.cpp プロジェクト: abhishek4747/trilinos
bool contain( const PartVector & v , const Part & part )
{
    const PartVector::const_iterator e = v.end();
    PartVector::const_iterator i = v.begin();

    i = std::lower_bound( i , e , part , PartLess() );

    return i != e && *i == & part ;
}
コード例 #3
0
ファイル: Part.cpp プロジェクト: agrippa/Trilinos
void remove( PartVector & v , Part & part )
{
  const PartVector::iterator e = v.end();
        PartVector::iterator i = v.begin();

  i = std::lower_bound( i , e , part , PartLess() );

  if ( i != e && *i == & part ) { v.erase( i ); }
}
コード例 #4
0
ファイル: Part.cpp プロジェクト: agrippa/Trilinos
bool insert( PartVector & v , Part & part )
{
  const PartVector::iterator e = v.end();
        PartVector::iterator i = v.begin();

  i = std::lower_bound( i , e , part , PartLess() );

  const bool new_member = i == e || *i != & part ;

  if ( new_member ) { v.insert( i , &part ); }
  return new_member ;
}
コード例 #5
0
ファイル: Part.cpp プロジェクト: agrippa/Trilinos
size_t intersect( const PartVector & v , const PartVector & p , PartVector & r )
{
  // Both lists must be sorted, assume v.size() > p.size()

  const PartVector::const_iterator ev = v.end();
        PartVector::const_iterator iv = v.begin();

  const PartVector::const_iterator ep = p.end();
        PartVector::const_iterator ip = p.begin();

  for ( ; ip != ep && iv != ev ; ++ip ) {
    Part * const q = *ip ;
    iv = std::lower_bound( iv , ev , q , PartLess() );
    if ( iv != ev && *iv == q ) { r.push_back( q ); }
  }

  return r.size() ;
}