指向std :: vector对象的指针

问题描述

我需要执行以下操作:

 std::vector<std::string> A; 
 std::vector<std::string> B;
 
 ==> pointer_to_vector<std::string> ptr;

//Some Code
ptr = A; //ptr points to object A

//Some More Code
ptr = B; // //ptr points to object B

在程序执行期间,ptr需要同时引用AB。如何实现并考虑到std::vector进行重新分配,如何在此处使用智能指针?

解决方法

您可以使用与定义任何其他类型的指针相同的方式来定义指向矢量的指针-在指针声明中使用*,并使用& address-of运算符来获取向量的内存地址。分配给指针的变量,例如:

std::vector<std::string> A; 
std::vector<std::string> B;
 
std::vector<std::string> *ptr;

//Some Code
ptr = &A; //ptr points to object A

//Some More Code
ptr = &B; // //ptr points to object B

或者,如果有任何对象出于自身目的而使operator&重载(std::vector没有重载),则使用std::addressof(),例如:

//Some Code
ptr = std::addressof(A); //ptr points to object A

//Some More Code
ptr = std::addressof(B); // //ptr points to object B