C++指向矢量的指针与指向矢量元素的指针
C++ pointer to vector vs pointer to vector elements
关于指向向量指针的小问题,以找出在这种情况下更有意义的方法(矩阵可能很大(:
typedef std::vector<double> Matrix;
// Pointer to the whole vector
std::unique_ptr<std::vector<Matrix>> _matrices;
// or vec on stack and point to each element
std::vector<std::unique_ptr<Matrix>> _matrices;
是否有明显的差异(除了使用矩阵指针与矩阵引用(?
提前感谢!
向量有一个指向它们所持有数据的内部指针。因此,无论数据有多大,您都不需要指向矢量本身的指针。
例如,如果您需要访问内部指针,则可以像这样获取它:
// just for show, don't do this unless you absolutely must
Matrix* matrix = _matrices.data();
拥有指针向量的主要原因是它利用多态性,但在您的实例中并非如此。否则,引入指针是多余的,效率较低。
我能想到指向向量的指针确实有意义的唯一可能的原因是,如果您需要通过不同的组件共享向量的所有权。
在这种情况下,std::shared_ptr 可能是有意义的:
std::shared_ptr<std::vector<Matrix>> shared_matrices;
但我认为这是相当罕见的。
相关文章:
- 调整大小后指向元素值的指针unordered_map有效?
- 当该数组的索引中没有元素时,指针指向什么?
- 如何在基类指针向量的元素上应用重载的多态函数
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 删除指针数组 (C++) 中的元素
- 从指向结构数组的指针中提取元素
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- 获取指向指针的指针元素 (c++)
- 经过最后一个数组元素末尾的指针是否应该等于超过整个数组末尾的指针?
- 存储指向动态数组元素的指针
- 通过作为指向 C++ 函数的指针传递来访问 std::array 元素的正确方法是什么?
- 取消引用C++中的指针元素
- 指针数组.获取指针元素的值
- C++访问带有迭代器的向量的指针元素
- C++:指针元素的向量在销毁时是否会自动释放每个指针所指向的动态内存?
- 打印整数指针元素时的结果不同
- 访问 c++ 的矢量指针元素
- 我必须手动删除QSet的每个(指针)元素吗?
- push_back在一行中指向Vector的非指针元素