首页 > 解决方案 > 如何将指针添加到指向向量的指针中

问题描述

我有这个:

    std::vector<Pair *> *artistAttributes;

类在哪里Pair,如何将元素添加到此指针中?

如果只是std::vector这样,我知道如何访问它,

std::vector<Pair *> artistAttributes; 

但是我不熟悉如何向其中添加元素,因为我对指针非常陌生。

标签: c++pointersdynamic-memory-allocation

解决方案


我对指针非常了解。

仅指向自动存储(“堆栈”)上的对象的指针和指向自由存储(“堆”)上的对象的指针之间存在语义差异,因为必须在某些时候使用指向堆上的对象的指针释放 ( delete/ ) 之前用(or )delete[]分配的内存。newnew[]

这不仅容易被遗忘,而且在分配和释放之间抛出异常时也无法做到。为了简化这一点,发明了遵循RAII/RDID习语(“资源获取是初始化/资源破坏是删除”)的智能指针:原始指针被封装在管理它们处理的资源的生命周期的对象中。

这使得在许多情况下可以避免遵循3/5 规则(这更像是现代 C++ 中的四大(半)规则),而是使用零规则

此外,拥有指向 a 的指针并没有真正意义,std::vector<>因为向量复制起来很便宜(与必须管理动态分配的内存的不便相比)。

所以而不是

std::vector<Pair *> *artistAttributes;

更好地使用

std::vector<std::shared_ptr<Pair>> artistAttributes;

推荐阅读