C++ 如何传递指针向量以便在函数中更改它们?
我基本上是通过引用来传递的,因此函数对向量所做的更改在函数范围之外是永久性的。我认为传递一个指针向量就足以独立完成这一任务,这是正确的吗?这在我的头脑中是完全有道理的,但我只是想确认我在这里没有犯错误C++ 如何传递指针向量以便在函数中更改它们?,c++,pointers,C++,Pointers,我基本上是通过引用来传递的,因此函数对向量所做的更改在函数范围之外是永久性的。我认为传递一个指针向量就足以独立完成这一任务,这是正确的吗?这在我的头脑中是完全有道理的,但我只是想确认我在这里没有犯错误 void updateCursors(vector<cursor*> cursors) void更新游标(向量游标) 这应足以更改这些指针指向的对象中的数据,是吗?“这应足以更改这些指针指向的对象中的数据,是吗?” 将向量传递到此函数时,将创建副本(因为它是通过值传递的),但由于它
void updateCursors(vector<cursor*> cursors)
void更新游标(向量游标)
这应足以更改这些指针指向的对象中的数据,是吗?“这应足以更改这些指针指向的对象中的数据,是吗?”将向量传递到此函数时,将创建副本(因为它是通过值传递的),但由于它是指针向量,YES,因此对象的更改将在外部可见 但最好还是通过引用传递,这样就不会创建冗余副本:
void updateCursors(vector<cursor*>& cursors)
void更新游标(向量和游标)
还要注意的是,使用裸指针会带来糟糕的内存管理。如果可能的话,我建议您使用对象向量(
vector
),或者如果您确实有很好的理由使用指针,那么我建议您使用智能指针(shared_ptr
,而不是cursor*
)。这个问题可以帮助您:您可以通过引用传递向量-
vector<cursor*>& cursors
向量和游标
但不应该在向量中保留指针。建议的方法是保持可复制/可移动的对象-
vector<cursor>& cursors
向量和游标
您是想更改std::vector本身,还是只更改元素?还是只更改元素的引用。在vector或任何其他容器中保留指针没有错,只要所有权和生命周期得到精心管理,尤其是在C++03中。是的,它们作为指针存在,因为它是动态分配的。