差异向量指针

时间:2018-05-30 14:10:30

标签: c++

vector<int*> avector<int> *a之间有什么区别?使用指针和向量时遇到问题。我可以使用此代码填充向量。

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

但是我无法在那之后了解如何使用这些值。

2 个答案:

答案 0 :(得分:2)

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以获取有关指针的任何其他帮助。

答案 1 :(得分:0)

vector<int*> a;

在这种情况下,变量a是包含整数指针的向量

vector<int> *a

在这种情况下,a是用于存储向量变量

的地址的指针

以下是您的示例,我希望您能看到它们之间的差异:

int var1 = 0, var2 = 1;
vector<int*> a;
a.push_back(&var1);
a.push_back(&var2);

vector<int>* b;
vector<int> c;
c.add(var1);
c.add(var2);

b = &c;