将指针分配给矢量的差异
differences in assigning pointers to vector
我是C++新手,我见过这样的代码
std::vector<Element*> *interactedElems
其中Element
是一个类。 但不确定以下情况下的差异:
std::vector<Element> *interactedElems
std::vector<Element*> interactedElems
std::vector<Element*> *interactedElems
std::vector<Element*> & interactedElems
Element
s 的vector
std::vector<Element> elements;
您可以向其添加Element
。假设Element
具有默认构造函数,则可以使用:
elements.push_back(Element());
您可以使用以下命令从elements
获得第一个Element
:
Element e = elements[0];
指向Element
s 的vector
的指针
std::vector<Element>* elementsPointer;
为了将Element
s添加到elementsPointer
,必须指向有效的东西。
elementsPointer = new std::vector<Element>;
elementsPointer->push_back(Element());
您可以使用以下命令从elementsPointer
获得第一个Element
:
Element e = (*elementsPointer)[0];
或
Element e = elementsPointer->at(0);
指向Element
的指针vector
std::vector<Element*> elementPointers;
您可以将Element*
添加到vector
。
elementPointers.push_back(new Element);
当你从这个vector
获得物品时,你会得到Element*
。
Element* ePtr = elementPointers[0];
指向指向Element
的指针vector
的指针
std::vector<Element*>* elementPointersPointer;
为了向elementPointersPointer
添加Element
指针,必须 指向有效内容。
elementPointersPointer = new std::vector<Element*>;
elementPointersPointer->push_back(new Element);
您可以使用以下命令从elementPointersPointer
获得第一个Element*
:
Element* ePtr = (*elementPointersPointer)[0];
或
Element* ePtr = elementPointersPointer->at(0);
使用引用
使用对上述任何表单的引用就像在C++中使用对任何其他类型的引用一样。
使用可以使用:
std::vector<Element> elements;
std::vector<Element>& elementsRef = elements;
或任何其他变体。
- 是指向 Element 对象向量的指针。
声明本身用于指向容器对象的指针。 它包含单个元素对象。
- 是指向元素的指针向量。
声明本身用于容器对象。 它包含指针,每个指针指向一个 Element 对象。
- 是指向元素的指针向量的指针。
声明本身是一个指针。 它指向一个包含更多指针的向量。 这些指针指向实际的元素对象。
- 是对指向元素的指针向量的引用。
这就像#3一样,只是它是对向量的引用而不是指针。 引用基本上是一个指针,你不能重新指向其他东西。
相关文章:
- 将指针分配给另一个指针时会发生什么情况?
- C++将一个指针分配给另一个指针时执行的类型检查
- 我似乎无法为指针分配一个数组,然后更改数组的内容
- C++为 void 指针分配一个字符串
- 当我在 C++ 中将派生类的指针分配给指针时,地址会更改
- MPI 集合通信中的指针分配
- 函数指针分配在创建 DLL 后导致错误
- 通过双指针分配指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- 我可以直接为指针分配地址吗?如果是,如何做到这一点
- 为什么为char指针分配内存不会截断char序列
- C++指针分配字符数组的地址
- 将 void 指针分配给另一个 void 指针
- 如何将不同的成员函数指针分配给注册类的不同实例?
- 如何为指针分配特定的内存地址?
- C++ - 无法将顶部常量指针分配给另一个非常量指针
- 将指针分配给另一个指针时会发生什么情况?
- 为指向C++中的对象/对象的指针分配堆内存
- 将指针分配给字符串变量中包含的地址
- 当直接分配时,为什么此功能指针分配起作用,而不是与有条件的操作员一起使用