C++,Visual Studio 2010 指针列表

c++, visual studio 2010 pointer in list

本文关键字:指针 列表 2010 Studio Visual C++      更新时间:2023-10-16

我有一个关于列表中的指针的简单问题。

pointer* Temp2;
Temp->data = 10; //(Temp is one of the elements in a list)

现在我想使用指针指向此元素以修改其数据。

Temp2=Temp;
Temp2->data = 5;

这能完成这项工作吗?

只要它不是本地指针,是的,而且只是因为它是一个列表。例如,如果它是一个向量,答案是否定的,因为一旦你修改了向量,你的指针可能会指向另一个元素,而列表不会发生这种情况。

我所说的本地指针是什么意思

_DATA local_data;
pointer *local_p = &local_data;
list.push_back(local_data);

local_p现在没用了,因为它指向堆栈,你需要获取一个指向堆的指针,std::list 为你的新元素创建了堆。

例如

pointer *improved_pointer = &*list.begin();

现在你可以做

pointer *alias = improved_pointer;

当然,这两个指针都将起作用,直到您从列表容器中删除该元素,只有这样它才会使您的指针无效。