代码之家  ›  专栏  ›  技术社区  › 

使用指向向量中存储的对象的指针…C++

  •  1
  •  · 技术社区  · 5 年前

    我有一个全球范围内的物体向量。

    std::vector<myObject>
    

    将方法的指针传递给向量中的一个元素。 此方法是否可以增加指针,以获取下一个元素,

    myObject* pmObj;
    
    ++pmObj; // the next element ??
    

    或者应该通过 std::Vector<myObject>::iterator 然后增加它?

    现在假设向量不会同时改变。

    3 回复  |  直到 15 年前
        1
  •  6
  •       15 年前

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

        2
  •  3
  •       15 年前

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

        3
  •  2
  •   sharptooth    15 年前

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