C++ 错误 具有类型“const sort”的表达式会丢失一些 const-volatile 限定符以调用“bool sort::operator ()(int,int)” 如下:环境 vs2019 内容:set内置函数排序
C++ 错误 具有类型“const sort”的表达式会丢失一些 const-volatile 限定符以调用“bool sort::operator ()(int,int)” 如下:
环境 vs2019
内容:set内置函数排序
1 #include <iostream> 2 #include<set> 3 #include<string> 4 5 using namespace std; 6 7 8 class sort 9 { 10 public: 11 bool operator()(int v1, int v2) 12 { 13 return v1 > v2; 14 } 15 }; 16 17 18 void test01() 19 { 20 set<int>s1; 21 s1.insert(30); 22 s1.insert(10); 23 s1.insert(50); 24 s1.insert(20); 25 s1.insert(40); 26 27 for (set<int>::iterator it = s1.begin(); it != s1.end(); it++) 28 { 29 cout << *it << " "; 30 } 31 cout << endl; 32 33 set<int, sort>s2; 34 s2.insert(30); 35 s2.insert(10); 36 s2.insert(50); 37 s2.insert(20); 38 s2.insert(40); 39 40 for (set<int, sort>::iterator it = s2.begin(); it != s2.end(); it++) 41 { 42 cout << *it << " "; 43 } 44 cout << endl; 45 46 47 } 48 int main() 49 { 50 51 test01(); 52 53 system("pause"); 54 return 0; 55 }
//改正 在仿函数中加入const
#include <iostream> #include<set> #include<string> using namespace std; class sort { public: bool operator()(int v1, int v2) const { return v1 > v2; } }; void test01() { set<int>s1; s1.insert(30); s1.insert(10); s1.insert(50); s1.insert(20); s1.insert(40); for (set<int>::iterator it = s1.begin(); it != s1.end(); it++) { cout << *it << " "; } cout << endl; set<int, sort>s2; s2.insert(30); s2.insert(10); s2.insert(50); s2.insert(20); s2.insert(40); for (set<int, sort>::iterator it = s2.begin(); it != s2.end(); it++) { cout << *it << " "; } cout << endl; } int main() { test01(); system("pause"); return 0; }
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15145954.html