如何解决指向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
需要同时引用A
和B
。如何实现并考虑到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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。