首页 新闻 会员 周边 捐助

C++ sort求助!!!

0
悬赏园豆:20 [已解决问题] 解决于 2012-05-07 21:55

在使用std::sort( first, last, Pred )的时候,第三个参数我想用自定义的比较函数。可是,我遇到了一下问题,在线求指导。

 

 1 template< typename T >
 2  void fun()
 3  
 4  {
 5     map< T, uint > data_count;     //映射数据-出现次数
 6       vector< T > data;          //数据集
 7       struct _less_by_count{
 8             bool operator()( const T& lhs, const T& rhs )
 9             {
10                   if( data_count.at( lhs ) < data_count.at( rhs ) )
11                         return true;
12                   return false;
13              }
14       };
15       std::sort( data.begin(), data.end(), _less_by_count() );
16  }

 

我想以每个数据的出现次数为排序规则,而data_count却为一个临时变量,编译错误:operator()不能访问data_count!

求助解决方案:以data_count.second为排序规则(不要将data_count设计为全局变量,保留其局部性)。

 

谢谢!!!!!!!!!!

Newwayy的主页 Newwayy | 初学一级 | 园豆:190
提问于:2012-05-07 21:15
< >
分享
最佳答案
0

已解决。

 1 template< typename T >
 2 void fun()
 3 {
 4   map< T, uint > data_count;
 5   vector< T > data;
 6 
 7   struct _less_by_count{
 8        map< T, uint >* _pdc;
 9        _less_by_count( map< T, uint >* pdc ): _pdc( pdc ) { }
10        bool operator()( const T& lhs, const T& rhs )
11        {
12              if( _pdc->at( lhs ) < _pdc->at( rhs ) )
13                    return true;
14              return false;
15        }
16   };
17 
18   std::sort( data.begin(), data.end(), _less_by_count( &data_count ) );
19 }
Newwayy | 初学一级 |园豆:190 | 2012-05-07 21:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册