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

时间:2012-12-11 23:47:47

标签: c++ pointers

我正在从标准输入读取一个double并将其保存到变量d中。我希望能够做到这一点不确定的次数。我使用以下代码为d创建指针。

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

然后我将此指针推入构造的堆栈(列表)类。但每当我按下一个以上的双倍时,它就会改变所有这些(指针是相同的)。

实施例。按2并获得一个数组[2]。按3并获取数组[3,3]而不是[3,2]。

2 个答案:

答案 0 :(得分:7)

你为什么要使用指针?

std::vector<double> v;

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

或者克里斯指出:

std::copy(std::istream_iterator<double>(std::cin),
          std::istream_iterator<double>(),
          std::back_inserter(v));

答案 1 :(得分:1)

*pd = d

而不是

pd = &d;

你做的是:

  • 您在堆栈上有double d变量
  • 您创建了double并将其指针保存在pd变量
  • 然后将地址保存到pd
  • 中的d变量
  • 然后从列表
  • 上的pd保存地址

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