【发布时间】:2011-11-05 00:20:40
【问题描述】:
我正在尝试使用 clang 编译以下代码,但出现以下错误。
我想知道为什么使用 list 类中的 sort 会起作用,而不是 std::sort。
#include <list>
#include <iostream>
int main(){
std::string strings[] = {"hello", "nihao", "byebye", "yo"};
std::list<std::string> cars(strings, strings+sizeof(strings) / sizeof(char **));
// cars.sort(std::less<std::string>()); // compiles fine and produce a sorted list
std::sort(cars.rbegin(), cars.rend(), std::less<std::string>() ); // this one won't compile
for (std::list<std::string>::iterator it = cars.begin(); it != cars.end(); ++it)
std::cout << *it << " - ";
std::cout << std::endl;
return 0;
}
/usr/include/c++/4.2.1/bits/stl_iterator.h:320:25:错误:无效 二进制表达式的操作数('iterator_type'(又名 'std::_List_iterator >') 和 'iterator_type') { 返回 __y.base() - __x.base(); }
【问题讨论】:
-
大多数情况下
std::sort对std::list不起作用。
标签: c++ algorithm templates std