c++:使用指向矢量元素开头的指针访问矢量元素

c++: accessing vector elements using a pointer to the start of it

本文关键字:元素 开头 指针 访问 c++      更新时间:2023-10-16

我有一个指向机器的指针向量:也就是说,

vector<Machines*> m;

我用指针填充向量,我知道存在的机器的数量。如果我创建了一个指向机器指针的指针,指向向量的开头:

Machines** m2;
m2 = & m[0];

当我递增"0"时,我会访问向量成员吗?

m2[0]->dostuff;
m2[1]->dostuff;
...

这对我来说似乎可行,但我不确定是否允许

提前谢谢!

这是允许的,但您是否意识到您可以执行以下操作,并且没有理由使用Machines** m2;

vector<Machines*> m;
// Fill vector here
m[0]->dostuff(); // I assumed dostuff was a function
m[1]->dostuff();

如果重新分配向量内存,代码中的指针将无效。

将元素推到向量时可能会发生这种情况。

由于vector保证分配连续内存,因此这似乎是正确的。但你为什么要?您可以直接在vector中获得所有这些功能。