求助,栈溢出及VS2022持续出现C6262警告问题,help
查看原帖
求助,栈溢出及VS2022持续出现C6262警告问题,help
463509
ktw000111楼主2023/1/9 12:43
#include <iostream> 
#include <string>
#include <algorithm>
#include <math.h>
#include <cstring>
#include <cstdio>
using namespace std;

int main() {
	int n, count=0,max = 0;
	cin >> n;
	int s[100001];
	//随机数获取
	for (int i = 0; i < n; i++) {
		cin >> s[i];
	}
	//升序排序
	sort(s, s + n,less<int>());
	//unique函数功能为去重并返回最后一个不重复元素的*指针
	count = unique(s, s + n)-s;
	max = s[count-1];
	cout << max * (4 + 6) + n + count * 5;
	system("pause");
	return 0;
}


/*
* 这种做法也能AC,但容易发生栈溢出现象且过程中调用的资源太多
//类似p1059明明的随机数,楼层去重统计即可
int main()
{
	int n, count = 0, max = 0;
	cin >> n;
	//辅助数组初始置为0,注意楼层数小于2*10^7
	int s[100010], temp[20000001] = { 0 };
	//随机数获取
	for (int i = 0; i < n; i++) {
		cin >> s[i];
	}
	//辅助数组统计重复值个数且以个数值为标准排序
	for (int i = 0; i < n; i++) {
		if (s[i] != 0)temp[s[i] - 1] += 1;
	}
	//统计去重后数据个数
	for (int i = 0; i < 20000000; i++) {
		if (temp[i] != 0) count++;;
	}
	//逆序查找最高楼层序号
	for (int i = 20000000; i >= 0; i--) {
		if (temp[i] != 0) {
			max = i + 1;
			break;
		}
	}
	//从0层出发又回到0层
	//时间消耗即为如下式子
	cout << max * (4 + 6) + n + count * 5;
	system("pause");
	return 0;
}
*/

楼上是两段AC代码,虽然思路没有大的问题,但过程中遇到了几个问题,希望有人可以帮忙解决一下,感激不尽。

一是19行代码sort(s, s + n,less());没有添加第三个参数less()的话应该也是默认升序排序,但提交后只有第七个测试点正确,其余全是WA,不清楚其中原因

二是在编译环境为VS 2022时,无论是第一种还是第二种都有持续出现警告C6262。

第二种我根据提示分配10MB栈空间后依然不够,提交后虽然是AC,但内存空间飙到了70MB左右,有些惆怅,想知道遇到这样的问题该如何解决比较妥当,代码或IDE该做什么调整。

2023/1/9 12:43
加载中...