【发布时间】:2020-09-21 13:40:26
【问题描述】:
#include <vector>
struct node{
int x;
};
node* temp = new node();
std::vector<node*> ptrs;
for (int i = 0; i < 10; i++){
temp->x = i;
ptrs.push_back(temp);
}
std::vector<node*>:: iterator j;
for (j = ptrs.begin(); j != ptrs.end(); j++){
std::cout << (*j)->x;
}
delete temp;
这会将999999999 打印为输出。我想要123456789。
修改它的最佳方法是什么?我的意思是,什么是最好的时尚?
【问题讨论】:
-
你的错误是什么?发生了什么你不想发生的事情?这看起来不会编译?请逐字包含您的编译器错误!
-
请编辑您的代码以包含minimal reproducible example
-
这将打印 999999999 作为输出。我想要123456789
-
提示:你创建了多少个节点?
-
ptrs的所有元素都是指针,都指向同一个node,也指向temp。所以最后一个循环打印temp->x十次。一般来说,复制指针不会复制或克隆指针指向的对象。
标签: c++ vector dynamic-memory-allocation