VC6是很古董的开发工具。。但是还是还是有人在用,今天就遇到一个很无语的问题。。 如果用这里的代码 http://dev.csdn.net/article/19/19643.shtm 在VC6中编译,会出现No constructor could take the source type, or constructor overload resolution was ambiguous 的错误,原因很简单。。VC6的STL是1998年以前的古董。。所以不兼容C++标准。。用VC7以上或者G++就没有问题。。 上面的链接里面的作者是修改了list文件里面sort和merge函数,偶是不推荐这样啦。。还是按下面这样写好一点 #include <list> #include <string> #include <functional> #include <iostream> struct S { std::string firstname; std::string secondname; int ID; bool operator < (S & b) { // 重新定义小于,因为默认的sort函数调用的操作符是<,所以我们只需要重载 < 就好了 }; int main(int argc, char* argv[]) { // 现在默认的operator已经被我们重载了,就不用管,直接调用sort就好了 |
使用c++的 list.sort()进行排序
2008/12/21 16:32