指向向量的指针的差异

时间:2015-05-13 05:36:22

标签: c++

我是C ++的新手,我见过像这样的代码

std::vector<Element*> *interactedElems

Element是一个类。 但不确定以下情况的差异:

  1. std::vector<Element> *interactedElems
  2. std::vector<Element*> interactedElems
  3. std::vector<Element*> *interactedElems
  4. std::vector<Element*> & interactedElems

2 个答案:

答案 0 :(得分:2)

  1. 是指向Element对象矢量的指针。
  2. 声明本身用于指向容器对象的指针。它包含单个Element对象。

    1. 是指向Elements的指针的向量。
    2. 声明本身用于容器对象。它包含指针,每个指针指向一个Element对象。

      1. 是指向Elements的指针向量的指针。
      2. 声明本身就是一个指针。它指向一个包含更多指针的向量。这些指针指向实际的元素对象。

        1. 是对元素指针向量的引用。
        2. 这与#3类似,不同之处在于它是对向量而不是指针的引用。一个引用基本上是一个指针,你不能指向别的东西。

答案 1 :(得分:2)

vector的{​​{1}}

Element

您可以向其添加std::vector<Element> elements; 。假设Element具有默认构造函数,您可以使用:

Element

您可以使用以下内容从elements.push_back(Element()); 获取第一个Element

elements

指向Element e = elements[0]; vector

的指针
Element

要将std::vector<Element>* elementsPointer; 添加到Element,必须指向有效的内容。

elementsPointer

您可以使用以下内容从elementsPointer = new std::vector<Element>; elementsPointer->push_back(Element()); 获取第一个Element

elementsPointer

Element e = (*elementsPointer)[0];

指向Element e = elementsPointer->at(0); 的<{1}}个<{1}}

vector

您可以将Element添加到std::vector<Element*> elementPointers;

Element*

当您从此vector获取商品时,您会获得elementPointers.push_back(new Element); s。

vector

指向Element*指针Element* ePtr = elementPointers[0]; 的指针

vector

为了向Element添加std::vector<Element*>* elementPointersPointer; 指针,必须这样做 指向有效的东西。

Element

您可以使用以下内容从elementPointersPointer获取第一个elementPointersPointer = new std::vector<Element*>; elementPointersPointer->push_back(new Element);

Element*

elementPointersPointer

使用参考

使用对上述任何形式的引用就像使用C ++中任何其他类型的引用一样。

使用可以使用:

Element* ePtr = (*elementPointersPointer)[0];

或任何其他变种。