我是C ++的新手,最近遇到了一个问题。
我尝试使用struct创建链接列表,并将所有引用存储在向量中,但我不知道为什么当我回想起值时,值会发生变化。
我会更具体。这是代码:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
int main() {
vector<int> a = { 2, 4, 3 };
vector<ListNode> aListNode;
aListNode.push_back(ListNode(a[0]));
for (int i = 1; i < a.size(); i++) {
aListNode.push_back(ListNode(a[i]));
aListNode[i - 1].next = &aListNode[i];
cout << aListNode[i - 1].next->val << endl;
}
cout << aListNode[0].next->val << endl;
cin.get();
return 0;
}
结果是:
4
3
-17891602
但预期的结果是:
4
3
4
我认为问题来自使用指针,但我仍然不确定在哪里。