首页 > 解决方案 > 差分向量指针

问题描述

vector<int*> a和 和有什么不一样vector<int> *a?我在使用指针和向量时遇到问题。我可以用这段代码填充向量。

    plate p;
    vector<plate*> A;
    A.push_back(&p);

但在那之后我不知道如何使用这些值。

标签: c++

解决方案


vector<int*> a是整数指针向量。

  • 要访问一个项目的值,可以将其*a[0]*at.at(0) 作“获取向量 a 中的第 0 个项目,然后获取它指向的值”

vector<int>* b是一个指向整数向量的指针

  • 要访问一个项目的值,可以将其(*b)[0]b->at(0)作“获取 b 指向的向量,然后从中获取第 0 个项目”。

请注意,“at”版本将执行边界检查以确保您拥有该元素;但我添加它是为了显示各种可用的语法。

正如评论中所述,原始指针的使用越来越少。此外,必须非常小心地管理它们的生命周期(在您的示例中,p 的寿命至少与 A 一样长),并且 c++ 在将对象移动到支持它的位置方面变得更好。

您应该考虑查看The Definitive C++ Book Guide and List以获取有关指针的任何其他帮助。


推荐阅读