#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 友们这个具体出现的问题是哪里,要怎样才能规避这种现象
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.