#include <bits/stdc++.h>
class wdf {
private:
std::vector<int> a, b;
int n;
public:
std::vector<int> c;
wdf (const std::string &st) : n(st.length()), c(n + 1), b(n + 1) {
std::cout << n << '\n';
}
};
signed main() {
std::string st;
std::cin >> st;
wdf arr(st);
}
上示代码在洛谷ide使用 c++20 无O2 运行,输入abbab,显示超出内存限制。但是如果改成下面的代码:
#include <bits/stdc++.h>
class wdf {
private:
std::vector<int> b;
//去掉了 a 的定义
int n;
public:
std::vector<int> c;
wdf (const std::string &st) : n(st.length()), c(n + 1), b(n + 1) {
std::cout << n << '\n';
}
};
signed main() {
std::string st;
std::cin >> st;
wdf arr(st);
}
却能正常运行。
这是为什么?