我在全局范围内有一个 myObjects 向量。
std::vector<myObject>
方法被传递一个指向向量中元素之一的指针。这个方法可以增加指针,以到达下一个元素,
myObject* pmObj;
++pmObj; // the next element ??
还是应该传递一个std::Vector<myObject>::iterator
并增加它?
现在假设向量在此期间不会改变。
是的-标准在技术更正中保证向量的存储是连续的,因此将指针递增到向量中将起作用。
是的,这将按预期工作,因为std::vector
标准要求使用连续存储。如果您正在处理一系列对象,我建议您传入一对迭代器。这几乎是 STL 使用的标准习语。这也将使您的代码更安全一些,因为您有一个明确的迭代端点,而不是依赖于计数或类似的东西。
如果向量没有重新分配并且您确定不会超出向量的范围,那么您可以使用这种方法。递增指针是合法的,当你有空间移动到下一个元素时,你可以通过递增指针来做到这一点,因为向量的缓冲区是单个内存块。