C ++何时使用指针向量?

时间:2018-04-28 06:08:01

标签: c++ pointers vector

我有关于指针和标准库使用的问题。 让我们创建一个新类 class Graph {     的std ::矢量<边缘及GT; * edge_list;     //另一种方式是     //的std ::矢量<边缘及GT; edge_list; } 我已经想到了使用指针的两个原因: 使用new和delete很容易操作内存 它可以很容易地通过参数传递。 但是,如果我们使用vector,我们可以通过引用传递。然后原因2不算数。 那么,如果我对内存分配不严格,是不是真的,我不需要使用指向vector和其他std容器的指针?

1 个答案:

答案 0 :(得分:1)

std::vector的实现包含2个指针:

  • 分配数组的开头

  • 分配数组结束后的1个元素

基本上,当您声明一个向量时,它在堆中没有分配空间,但是当您添加元素时,它会发生变化。

请注意std::vector管理它使用的内存,因此您无需担心newdelete(不必要的复杂性)。一旦超出范围,它就会释放其内存(堆栈和堆)。

正如你所说,矢量可以很容易地通过引用传递,它的工作方式与机器代码的指针相同,而且更清晰。