常见错误

1、VS2008 stack overflow

测试递归程序,当递归次数很大时,超过了VS2008默认的栈空间大小,导致了stack overflow

解决方法:这里仅仅为了测试程序,所以只改变编译器的设置

项目-属性-配置属性-链接器-系统-设置栈堆保留大小和栈堆提交大小(单位为字节,设置一个比较大的数即可



2. switch括号中的表达式的值的限制

switch括号中的表达式的值限制是4个字节,比int大的不行,只能是整形、字符型或者是枚举型表达式,即只能是byte, char, short, int或者是相应的枚举类型。

3. 在自定义Sort函数中的比较函数时,出现 Debug Assertion Failed! 和 Expression: invalid operator<的问题.

错误的例子

#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int nFirst,int nSec)
{
	if (nFirst <= nSec)//区别
	{
		return true;
	}
	return false;
}

int main()
{
	int nArr[2] = {3,3};
	sort(nArr,nArr + 2,cmp);
	system("pause");
	return 1;
}
正确的例子

bool cmp(int nFirst,int nSec)
{
	if (nFirst < nSec)//区别
	{
		return true;
	}
	return false;
}
原因:在自定义sort的Cmp函数时,要求Cmp函数必须是 strict weak ordering 。其英文解释为A Strict Weak Ordering is a Binary Predicate that compares two objects, returning true if the first precedes the second

也就是说,只有当第一个参数在第二个参数前的时候才返回真,其他均为假。注意,在两个参数相等时,必须返回假。这里易出错。需注意。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值