00001
00002
00003
00004
00005 #ifndef INCLUDE_InsertSortedVector_h
00006 #define INCLUDE_InsertSortedVector_h
00007
00008 #ifndef INCLUDE_vector
00009 #define INCLUDE_vector
00010 #include <vector>
00011 #endif
00012
00013 #ifndef INCLUDE_map
00014 #define INCLUDE_map
00015 #include <map>
00016 #endif
00017
00039 template< typename FIRST, typename SECOND>
00040 void tf_InsertSortedVector( std::vector< std::pair<FIRST,SECOND> >& vect_pair_data, std::map< FIRST, SECOND>& mp)
00041 {
00042 std::vector<bool> is_used( vect_pair_data.size(), false);
00043 std::vector<bool>::iterator p_is_used;
00044 size_t i, j;
00045
00046 if (!mp.empty()) mp.clear();
00047
00048 for (i= vect_pair_data.size()/2; i!=0; i/=2) {
00049 for (j=0; j<vect_pair_data.size(); j+=i) {
00050 if (!is_used[j]) {
00051 is_used[j] = true;
00052
00053 mp.insert( mp.begin(), vect_pair_data[j]);
00054 }
00055 }
00056 }
00057 }
00058
00059 #endif