关于指向向量的指针的小问题,以找出在这种情况下更有意义的方法(矩阵可能很大):
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;
是否有明显的区别(除了使用Matrix指针和Matrix引用之外)?
谢谢!
答案 0 :(得分:4)
向量有一个内部指针,指向它们保存的数据。因此,无论数据多大,都不需要指向向量本身的指针。
例如,如果您需要访问内部指针,则可以这样获取它:
// 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;
但是我认为那将是相当罕见的。