我在全球范围中有一个myobjects的向量。

std::vector<myObject>

方法通过指针指向向量中的一个元素之一。该方法可以递增指针,以获取下一个元素,

myObject* pmObj;

++pmObj; // the next element ??

还是应该通过 std::Vector<myObject>::iterator 而是增加?

现在假设矢量在此期间不会更改。

有帮助吗?

解决方案

是的 - 技术校正中的标准保证,即向量的存储是连续的,因此将指针递增到向量中。

其他提示

是的,这将按预期工作,因为 std::vector 要求按标准使用连续存储。如果您正在使用一系列对象,我建议通过一对迭代器进行传递。这几乎是STL所采用的标准习语。这也将使您的代码更加安全,因为您有迭代的明确终点,而不是依靠计数或类似的东西。

如果未重新分配向量,并且您肯定不会摆脱向量的界限,那么您可以使用此方法。增加指针是合法的,尽管您有空间移至下一个元素,但可以通过增加指针来进行操作,因为向量的缓冲区是单个内存块。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top