关于stl提供的min函数
今天使用对min函数绑定const引用时出现了问题,代码如下
int main()
{
while(~scanf("%d%d%d", &h, &w, &n))
{
const int &lim = min(n, h); //会出现ACCESS_VIOLATION, 改为int lim = min(n, h)错误消失
build(1, lim, 1);
int temp;
while(n--)
{
scanf("%d", &temp);
if(mmx[1] < temp)
printf("-1\n");
else
printf("%d\n", query(temp, 1, lim, 1));
}
}
return 0;
}
看了一下min的原型竟然返回的是一个const引用,不甚理解,还请各位指点
[解决办法]
查了下帮助文件:
#include <stdlib.h>
#define min(a,b) ...
[解决办法]
stl?
int main(){ const int &i = min(3, 5); cout << i << endl;
[解决办法]
如果是对象类型,返回const &是避免了拷贝对象,为了你不修改容器中的值吧。如果是基本类型,就需要你重新定义一个变量了,都是值拷贝的。