Wiselib
wiselib.stable/util/pstl/pair.h
Go to the documentation of this file.
00001 /***************************************************************************
00002  ** This file is part of the generic algorithm library Wiselib.           **
00003  ** Copyright (C) 2008,2009 by the Wisebed (www.wisebed.eu) project.      **
00004  **                                                                       **
00005  ** The Wiselib is free software: you can redistribute it and/or modify   **
00006  ** it under the terms of the GNU Lesser General Public License as        **
00007  ** published by the Free Software Foundation, either version 3 of the    **
00008  ** License, or (at your option) any later version.                       **
00009  **                                                                       **
00010  ** The Wiselib is distributed in the hope that it will be useful,        **
00011  ** but WITHOUT ANY WARRANTY; without even the implied warranty of        **
00012  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         **
00013  ** GNU Lesser General Public License for more details.                   **
00014  **                                                                       **
00015  ** You should have received a copy of the GNU Lesser General Public      **
00016  ** License along with the Wiselib.                                       **
00017  ** If not, see <http://www.gnu.org/licenses/>.                           **
00018  ***************************************************************************/
00019 #ifndef WISELIB_DATA_STRUCTURES_MISC_PAIR
00020 #define WISELIB_DATA_STRUCTURES_MISC_PAIR
00021 
00022 namespace wiselib
00023 {
00024 
00025    template <typename First, typename Second>
00026    struct pair
00027    {
00028       typedef First first_type;
00029       typedef Second second_type;
00030 
00031       First first;
00032       Second second;
00033 
00034       pair()
00035          : first  ( First() ),
00036             second ( Second() )
00037       {}
00038 
00039       pair( const First& a, const Second& b )
00040          : first  ( a ),
00041          second ( b )
00042       {}
00043 
00044       template<typename First2, typename Second2>
00045       pair( const pair<First2, Second2>& pair2 )
00046          : first  ( pair2.first ),
00047          second ( pair2.second )
00048       {}
00049 
00050    //    const pair<First, Second>& operator=( const pair<First, Second>& pair2 )
00051    //    {
00052    //       *this.first = pair2.first;
00053    //       *this.second = pair2.second;
00054    //
00055    //       return *this;
00056    //    }
00057 
00058    };
00059    
00060    template <class First, class Second>
00061    inline bool operator < ( const pair<First, Second>& p1, const pair<First, Second>& p2)
00062    {
00063       return p1.first < p2.first ||
00064       ( !( p2.first < p1.first ) && p1.second < p2.second ); 
00065    }
00066 
00067 }
00068 
00069 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines