访问指针的第一个元素到对象指针的向量?

时间:2019-09-05 22:21:55

标签: c++ pointers vector

我将shared_ptr的矢量声明为shared_ptr的矢量,像这样的对象...

std::shared_ptr<std::vector<std::shared_ptr<my_obj_t>>> vec =
    std::make_shared<std::vector<std::shared_ptr<my_obj_t>>>();

我的问题是我需要访问向量内部使用的数组中的第一个元素。在将其更改为对象的shared_ptr之前,它只是一个对象,我使用了data()。

但是现在有了shared_ptr的向量,我不确定如何访问第一个元素,以便可以向其添加偏移量并返回my_obj_t的指针。

我正尝试使用

(my_vec->data() + offset)

...其中func需要指向my_obj_t数组的指针。

有想法吗?

更新: 在我将其用作...之前

std::shared_ptr<std::vector<my_obj_t>> vec =
    std::make_shared<std::vector<my_obj_t>>();

我将通过

进行访问
(vec->data() + offset)

3 个答案:

答案 0 :(得分:1)

要引用my_obj_t指向的offset

*my_vec->at(offset)

不是 my_obj_t数组任何地方

答案 1 :(得分:0)

std::make_shared<std::vector<std::shared_ptr<my_obj_t>>>()

这将构造一个shared_ptr s的空向量。

  

我的问题是我需要访问所用数组中的第一个元素   在向量内部。

由于向量为空,因此您正在想象的内部数组可能还不存在。因此,无法访问它的第一个元素。您必须先添加元素,然后才能使用它们。

答案 2 :(得分:0)

克里斯显然没有做出答案,并且因为它是最干净的,所以这就是我所使用的。

(*my_vec)[offset]->get()