vector<int*> a
和vector<int> *a
之间有什么区别?使用指针和向量时遇到问题。我可以使用此代码填充向量。
plate p;
vector<plate*> A;
A.push_back(&p);
但是我无法在那之后了解如何使用这些值。
答案 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;