1

我在全局范围内有一个 myObjects 向量。

std::vector<myObject>

方法被传递一个指向向量中元素之一的指针。这个方法可以增加指针,以到达下一个元素,

myObject* pmObj;

++pmObj; // the next element ??

还是应该传递一个std::Vector<myObject>::iterator并增加它?

现在假设向量在此期间不会改变。

4

3 回答 3

7

是的-标准在技术更正中保证向量的存储是连续的,因此将指针递增到向量中将起作用。

于 2009-03-16T12:35:36.370 回答
3

是的,这将按预期工作,因为std::vector标准要求使用连续存储。如果您正在处理一系列对象,我建议您传入一对迭代器。这几乎是 STL 使用的标准习语。这也将使您的代码更安全一些,因为您有一个明确的迭代端点,而不是依赖于计数或类似的东西。

于 2009-03-16T12:39:32.820 回答
2

如果向量没有重新分配并且您确定不会超出向量的范围,那么您可以使用这种方法。递增指针是合法的,当你有空间移动到下一个元素时,你可以通过递增指针来做到这一点,因为向量的缓冲区是单个内存块。

于 2009-03-16T12:36:14.217 回答