c++ - 差分向量指针
问题描述
vector<int*> a
和 和有什么不一样vector<int> *a
?我在使用指针和向量时遇到问题。我可以用这段代码填充向量。
plate p;
vector<plate*> A;
A.push_back(&p);
但在那之后我不知道如何使用这些值。
解决方案
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以获取有关指针的任何其他帮助。
推荐阅读
- grep - grep 字符串与字母和数字的完全匹配
- angularjs - 返回调用 JS 的 reduce() 得到的数组
- java - 如何在 XDevComboBox/RapidClipse 代码生成器中处理 ID?
- r - 识别字符串中的相似元素
- java - 如何截取在 selenium 中失败的 webelement(部分屏幕而不是整个页面)的屏幕截图
- ionic-framework - 将离子芯片包裹在 ion-item Ionic 4 中
- jenkins - java.io.IOException:无法运行程序“curl”:错误=2,没有这样的文件或目录
- r - 将列表转换为数据框
- html - 将文本与图像对齐
- php - 合并两个以逗号分隔的数组