|
我在使用sort()对一个类序列进行排序,如下程序:
#include <iostream>
#include <vector>
using namespace std;
class Test {
public:
int _i;
Test(int i) : _i(i) {};
bool operator < (const Test& i ) const { return _i < i._i;}
};
int main()
{
vector<Test> v;
for (int i=0; i<5; i++) {
Test t(i);
v.push_back(t);
}
sort(v.begin(),v.end());
for (vector<Test>::const_iterator ci=v.begin(); ci!=v.end(); ci++)
cout << ci->_i << endl;
return 0;
}
以上编译没有问题,但是如果:
bool operator < (const Test& i ) const { return _i < i._i;}
改为非常量引用,或者非常成员函数
bool operator < (Test& i ) { return _i < i._i;}
这样编译不能通过,我知道这种写法不好。但是我想了解一下这是sort函数的强制要求吗?还有哪些库函数有类似有问题?
请指教,谢谢。
编译器版本:
gcc version 3.4.5 20051201 (Red Hat 3.4.5-2)
|
|