在斯坦利·利普曼的书中有一个例子,当他用
vector <string> * var;为什么他要创建一个指向向量的指针?
有时创建指向向量的指针有用吗?我应该在什么时候这样做?
发布于 2014-12-15 21:45:36
指针不仅对堆上的数据有用,而且不应该删除所有指针。
指针作为对另一个对象的可能空引用非常有用,例如,您可能需要调用一个具有指针参数的函数,指示您可以选择传递一个向量:
int frobnicate(std::string filename, std::vector<std::string>* words);如果我传递一个非空指针作为第二个参数,该函数将在*words中存储一些数据。
我可以这样说:
int frob = frobnicate("input.txt", nullptr);或者像这样:
std::vector<string> v;
std::vector<string>* pv = &v;
int frob = frobnicate("input.txt", pv);或者,我可以通过为调用:pv创建一个临时指针来避免声明frobnicate("input.txt", &v),但我不必这样做。
发布于 2014-12-15 21:36:17
是的,确实很有用。
更有用的是像这个unique_ptr<vector<string>> var ( new vector<string>)
发布于 2014-12-16 06:47:52
两种类型的向量声明及其平均值: 1) std::向量var;-对于此声明,向量为堆上的元素和堆栈上的(分配内存)地址分配内存。因此,由于这个原因,元素的数量与堆栈大小成正比(而较大的堆栈大小不利于编程,基本上不适合小型设备编程)。2) std::vector *var =新向量();-对于此声明,向量为其元素分配内存,并且它的(已分配内存)位于堆中。
这就是“为什么使用向量指针”的原因之一。如果我搞错了请告诉我。
谢谢
https://stackoverflow.com/questions/27493353
复制相似问题