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

Access first element of pointer to vector of object pointers?

本文关键字:指针 第一个 元素 向量 对象 访问      更新时间:2023-10-16

我声明了对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)

获取对指向my_obj_t的引用offset

*my_vec->at(offset)

任何地方都没有my_obj_t数组

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

这将构造一个shared_ptrs 的空向量。

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

由于向量是空的,因此您想象的内部数组可能还不存在。 因此,无法访问它的第一个元素。 在尝试使用元素之前,您必须添加它们。

克里斯显然没有来得及回答,因为它是最干净的,这就是我使用的。

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