c++ 学习笔记 set 容器使用指定规则排序

文章讲述了在C++中,使用带有`const`限定的`myComp`对象作为排序函数时遇到的C3848错误,原因是隐含的`this`指针为`const`导致不能修改类成员。解决方案是将成员函数改为`const`版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误信息 :

 C3848    具有类型“const myComp”的表达式会丢失一些 const-volatile 限定符以调用“bool myComp::operator ()(int,int)” 

代码段为:
class myComp {
public:
	bool operator()(int v1, int v2)  {
		return v1 > v2;
	}
};
void set04() {

	//指定排序规则为从大到小
	  
	set<int,myComp>s2;

	//插入数据  

	s2.insert(20);
	s2.insert(10);
	s2.insert(40);
	s2.insert(30);

	for (set<int,myComp>::const_iterator it = s2.begin(); it != s2.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}

错误原因 (个人理解):函数隐含传入的this 指针为const 指针,因此在成员函数中修改它所在类的成员的操作都是不被允许的。

解决方案 :在仿函数中加入 const

class myComp {
public:
	bool operator()(int v1, int v2) const {  //在这加
		return v1 > v2;
	}
};

参考:【C++编程语言】严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C3848 具有类型“const MyCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool_严重性代码说明项目文件行禁止显示状态 错误c3848具有类型“const mycomp-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值