#include<iostream>
#include<vector>
using namespace std;
struct test {
vector<int> vec;
test() : vec(1) {}
int new_node(int i) {
int n = vec.size();
vec.push_back(i);
return n;
}
void func(int i) {
vec[0] = new_node(i);
cout << vec[0] << endl;
}
};
int main() {
test t;
for(int i = 0; i < 5; i++) t.func(i);
return 0;
}
(原代码比较复杂,这里经过化简,就是vec[0]存当前的长度,每次func就vec后面加一个数)
学的工地 C++,感觉好像没什么特别的实现,但就是产生奇怪的问题
本地用比较旧的 G++会产生运行时错误
而找了其它的在线 IDE 下,C++11 会输出
0
0
3
3
5
而在 C++17 下是我所期望的
1
2
3
4
5
想问问 V 友们这个具体出现的问题是哪里,要怎样才能规避这种现象