我在全局范围内有一个myObjects的向量。
std::vector<myObject>
向方法传递指向向量中某个元素的指针。 这个方法可以递增指针,以便到达下一个元素
myObject* pmObj;
++pmObj; // the next element ??
或是应该传递std::Vector<myObject>::iterator
并相反增加?
现在假设在此期间不会改变矢量。
答案 0 :(得分:6)
是 - 标准保证在技术修正中向量的存储是连续的,因此将指针递增到向量将起作用。
答案 1 :(得分:3)
是的,这将按预期工作,因为std::vector
被强制要求使用标准的连续存储。如果你正在使用一系列对象,我建议传入一对迭代器。这几乎是STL采用的标准习惯用语。这将使您的代码更安全,因为您有一个显式的迭代终点,而不是依赖于计数或类似的东西。
答案 2 :(得分:2)
如果没有重新分配向量,并且您确定不会超出向量的界限,那么您可以使用此方法。增加指针是合法的,虽然你有空间移动到下一个元素,你可以通过递增指针来实现,因为向量的缓冲区是单个内存块。