c****6 发帖数: 22 | 1 我需要用一个返回索引的排序算法,就写了以下小函数,
在VC++下能顺利编译且运行正确,但是在g++下通不过,
大意是说找不到对应的stable_sort,貌似参数类型不对,
我想来想去觉得也就是function object不对,但是看不出
哪里不对,请指教!
void sort_with_index(vector& vect, vector& idx)
{
class lt {
vector& _x;
public:
lt( vector& x ) : _x(x) {}
bool operator()( int j, int k ) const { return _x[j] > _x[k]; }
};
idx.resize(vect.size());
for (int i=0; i
stable_sort( idx.begin(), idx.end(), lt(vect) );
} | p***o 发帖数: 1252 | 2 标准说模板函数不能引用没有linkage的类,而你的lt就是这么一个类,所以
gcc报错。你要把lt拿到函数外面来。
至于VC,估计是做了个扩展。我还是比较赞成这个扩展的,因为把lt拿到外面
来实在是太丑了 ...
【在 c****6 的大作中提到】 : 我需要用一个返回索引的排序算法,就写了以下小函数, : 在VC++下能顺利编译且运行正确,但是在g++下通不过, : 大意是说找不到对应的stable_sort,貌似参数类型不对, : 我想来想去觉得也就是function object不对,但是看不出 : 哪里不对,请指教! : void sort_with_index(vector& vect, vector& idx) : { : class lt { : vector& _x; : public:
| c****6 发帖数: 22 | 3 thanks。
【在 p***o 的大作中提到】 : 标准说模板函数不能引用没有linkage的类,而你的lt就是这么一个类,所以 : gcc报错。你要把lt拿到函数外面来。 : 至于VC,估计是做了个扩展。我还是比较赞成这个扩展的,因为把lt拿到外面 : 来实在是太丑了 ...
|
|