【问题标题】:Pointer to a std::vector object(s)指向 std::vector 对象的指针
【发布时间】:2021-02-17 15:16:53
【问题描述】:

我需要做以下事情:

 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 进行重新分配,如何实现它,这里如何使用智能指针?

【问题讨论】:

  • std::vector&lt;std::string&gt;* ?
  • "这里如何使用智能指针?"为什么这里需要一个智能指针?
  • 这里不需要智能指针,一个普通的原始指针就足够了。
  • 智能指针管理ownership。在自动变量的情况下,所有权已经被管理。当变量超出范围时,它会被处理。

标签: c++ pointers smart-pointers stdvector


【解决方案1】:

定义指向向量的指针与定义指向任何其他类型的指针的方式相同——在指针声明中使用*,并使用&amp; 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

或者,使用std::addressof(),如果任何对象出于自己的目的重载operator&amp;std::vector 不会),例如:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2011-03-18
    • 2021-09-16
    • 2014-10-28
    • 1970-01-01
    相关资源
    最近更新 更多