【发布时间】:2014-04-12 11:33:34
【问题描述】:
在练习使用 lambda 时,我编写了这个程序,它应该按 pairs 的第二个元素(int)对 list 进行排序。
#include#include #include 使用命名空间标准; 主函数() { list > s = {{"two", 2}, {"one", 1}, {"three", 3}}; sort(s.begin(), s.end(), [](pair a, pair b) -> bool { 返回 (a.second) > (b.second); }); for_each(s.begin(), s.end(), [](pair a) { cout 但我得到了这些错误:
c:\qt\qt5.2.0\tools\mingw48_32\lib\gcc\i686-w64-mingw32\4.8.0\include\c++\bits\stl_algo.h:5513: error: no match for 'operator-' (operand types are 'std::_List_iterator<std::pair<std::basic_string<char>, int> >' and 'std::_List_iterator<std::pair<std::basic_string<char>, int> >') std::__lg(__last - __first) * 2, __comp); ^ c:\qt\qt5.2.0\tools\mingw48_32\lib\gcc\i686-w64-mingw32\4.8.0\include\c++\bits\stl_algo.h:2245: ошибка: 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::_List_iterator<std::pair<std::basic_string<char>, int> >; _Compare = main()::__lambda0]', declared using local type 'main()::__lambda0', is used but never defined [-fpermissive] __final_insertion_sort(_RandomAccessIterator __first, ^我的代码有什么问题?
【问题讨论】:
标签: c++ list sorting c++11 lambda