【发布时间】:2018-08-22 11:38:45
【问题描述】:
我是 C++ 新手,我正在尝试将结构向量初始化为以下代码。
struct Node{
int x;
Node *p;
int rank;
Node(int x) {
this->p = this;
this->x = x;
this->rank = 0;
}
};
int main() {
vector<Node> disjointSets;
for (int i = 0; i < 50; i++) {
Node a(i);
disjointSets.push_back(a);
}
}
在 main 中,我尝试每次创建一个 Node a 并将其推入向量中。但我后来发现存在一个问题,即 a 总是在完全相同的内存位置创建。因此,应该指向每个 Node 本身的 p 将指向循环后的最后一个元素。有人可以解释为什么节点 a 总是在相同的内存地址创建以及如何解决这个问题?
【问题讨论】:
-
这让我很想知道 push_back 操作中发生了什么。
标签: c++ pointers vector struct