如何在循环C++中创建唯一指针?

问题描述 投票:1回答:2

我正在阅读一个 double 的标准输入,并将其保存到一个变量中。d. 我希望能够在不指定的次数内完成这个任务。我使用下面的代码来创建一个指针到 d.

double *pd = new double;
pd = &d;

然后我将这个指针推送到一个构造栈(list)类中。 但是每当我推送多个双数时,它就会改变所有的双数(指针是一样的)。

例如,推送2,得到一个数组[2];推送3,得到数组[3,3]而不是[3,2]。

c++ pointers
2个回答
1
投票
*pd = d

而不是

pd = &d;

你所做的是。

  • 你要做的是: double d 栈上变量
  • 你创建了double并将其指针保存在 pd 可变的
  • 然后你把地址保存到PD中的D变量中。
  • 然后你保存地址从 pd 名单上

这意味着你有地址列表到变量 d (列表中的每一个对象都是指向 d 变量)。)


7
投票

你为什么要使用指针呢?

std::vector<double> v;

double d;
while (std::cin >> d)
    v.push_back(d);

或者像chris指出的那样。

std::copy(std::istream_iterator<double>(std::cin),
          std::istream_iterator<double>(),
          std::back_inserter(v));
© www.soinside.com 2019 - 2024. All rights reserved.