首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用指向stl向量的指针是个好主意吗?

使用指向stl向量的指针是个好主意吗?
EN

Stack Overflow用户
提问于 2014-12-15 21:22:06
回答 3查看 462关注 0票数 0

在斯坦利·利普曼的书中有一个例子,当他用

代码语言:javascript
运行
复制
vector <string> * var;

为什么他要创建一个指向向量的指针?

有时创建指向向量的指针有用吗?我应该在什么时候这样做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-15 21:45:36

指针不仅对堆上的数据有用,而且不应该删除所有指针。

指针作为对另一个对象的可能空引用非常有用,例如,您可能需要调用一个具有指针参数的函数,指示您可以选择传递一个向量:

代码语言:javascript
运行
复制
int frobnicate(std::string filename, std::vector<std::string>* words);

如果我传递一个非空指针作为第二个参数,该函数将在*words中存储一些数据。

我可以这样说:

代码语言:javascript
运行
复制
int frob = frobnicate("input.txt", nullptr);

或者像这样:

代码语言:javascript
运行
复制
std::vector<string> v;
std::vector<string>* pv = &v;
int frob = frobnicate("input.txt", pv);

或者,我可以通过为调用:pv创建一个临时指针来避免声明frobnicate("input.txt", &v),但我不必这样做。

票数 2
EN

Stack Overflow用户

发布于 2014-12-15 21:36:17

是的,确实很有用。

更有用的是像这个unique_ptr<vector<string>> var ( new vector<string>)

票数 0
EN

Stack Overflow用户

发布于 2014-12-16 06:47:52

两种类型的向量声明及其平均值: 1) std::向量var;-对于此声明,向量为堆上的元素和堆栈上的(分配内存)地址分配内存。因此,由于这个原因,元素的数量与堆栈大小成正比(而较大的堆栈大小不利于编程,基本上不适合小型设备编程)。2) std::vector *var =新向量();-对于此声明,向量为其元素分配内存,并且它的(已分配内存)位于堆中。

这就是“为什么使用向量指针”的原因之一。如果我搞错了请告诉我。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27493353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档