【问题标题】:c++: accessing vector elements using a pointer to the start of itc ++:使用指向它开始的指针访问向量元素
【发布时间】:2012-07-24 00:39:42
【问题描述】:

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

vector<Machines*> m;

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

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

我是否会在增加“0”时访问向量成员?

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

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

提前谢谢你!

【问题讨论】:

  • 这当然是合法的,但是当你已经有一个向量时似乎有点奇怪 - 附带问题:为什么是指针向量?为什么不只是机器的向量?
  • @John3136 可能 Machine 是一个基类,在这种情况下,您需要指针来防止切片。

标签: c++ pointers stl vector std


【解决方案1】:

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

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

【讨论】:

  • 哦,是的,我知道,我只是想知道上面的方法是否可行。我不是以任何方式编码的。非常感谢您的回答! :)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 2012-06-07
      • 2010-12-27
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      相关资源
      最近更新 更多