繁体   English   中英

std :: vector指针

[英]std::vector pointer

我有一个问题,如果我有一个STL向量,我可以这样写:

std::vector<int> *p;

但是我无法决定是否在任何情况下都会使用它? 如果我用p调整指针所指向的向量的大小,在这种情况下指针p也会发生什么?

我在这里听起来可能很愚蠢,但是这些问题只在脑海中浮现,我能够在g ++中编译std::vector<int> *p东西。

通过说:

std::vector *p;

您正在声明一个指向Vector的指针。 现在,您需要分配存储位置来保存Vector对象的存储内容,而不是单个元素。 之后,您可以根据自己的意愿随意添加,删除,删除和更新单个元素。

至于调整向量的大小,所引用的内存p不会发生任何变化,只有与Vector对象有关的内存内容会改变。

这种结构的一种用途是具有向量的动态数组。 假设您需要维护节点的邻接列表,但是您不确定在运行时之前会出现多少个节点。

如果要在运行时从多个向量中选择一个特定向量,则可以使用指向向量的指针,即要动态选择它。

关于“调整大小”问题:正如向量指针受resize()影响吗? 状态,只要向量存在,指向向量本身的指针就有效。 但是指向向量元素的指针可能会更改。 例如:

std::vector<int> v;
std::vector<int> *p;
p = &v; // Does not change

int *pe;
pe = &v[0]; // May change

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM