使用指向存储在向量中的对象的指针... c ++

时间:2009-03-16 12:33:39

标签: c++ pointers iterator stdvector

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

std::vector<myObject>

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

myObject* pmObj;

++pmObj; // the next element ??

或是应该传递std::Vector<myObject>::iterator并相反增加?

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

如果没有重新分配向量,并且您确定不会超出向量的界限,那么您可以使用此方法。增加指针是合法的,虽然你有空间移动到下一个元素,你可以通过递增指针来实现,因为向量的缓冲区是单个内存块。