c++ - 如何将指针添加到指向向量的指针中
问题描述
我有这个:
std::vector<Pair *> *artistAttributes;
类在哪里Pair
,如何将元素添加到此指针中?
如果只是std::vector
这样,我知道如何访问它,
std::vector<Pair *> artistAttributes;
但是我不熟悉如何向其中添加元素,因为我对指针非常陌生。
解决方案
我对指针非常了解。
仅指向自动存储(“堆栈”)上的对象的指针和指向自由存储(“堆”)上的对象的指针之间存在语义差异,因为必须在某些时候使用指向堆上的对象的指针释放 ( delete
/ ) 之前用(or )delete[]
分配的内存。new
new[]
这不仅容易被遗忘,而且在分配和释放之间抛出异常时也无法做到。为了简化这一点,发明了遵循RAII/RDID习语(“资源获取是初始化/资源破坏是删除”)的智能指针:原始指针被封装在管理它们处理的资源的生命周期的对象中。
这使得在许多情况下可以避免遵循3/5 规则(这更像是现代 C++ 中的四大(半)规则),而是使用零规则。
此外,拥有指向 a 的指针并没有真正意义,std::vector<>
因为向量复制起来很便宜(与必须管理动态分配的内存的不便相比)。
所以而不是
std::vector<Pair *> *artistAttributes;
更好地使用
std::vector<std::shared_ptr<Pair>> artistAttributes;
推荐阅读
- python - 如何在 Django API 中显示结果
- css - Flex box 项目位置自定义排序
- python - 运行标签传播算法后在 Graphframe 上绘制 python-igraph
- sql - 以特定长度和特定字符打破sql查询中的字符串
- unity3d - 如何从 Unity Packages 安装 PSD Importer?
- mysql - 如何查询以计算层次结构树中的值
- arrays - 数组内的bash变量扩展
- telegram - 动态添加 InlineKeyboardButton
- flowtype - 我将如何键入命令工厂函数?
- api - 401 错误凭据 [lexik/JWTBundle]