簡體   English   中英

如何在循環 C++ 中創建唯一指針?

[英]How to create unique pointers in a loop C++?

我正在從標准輸入中讀取double並將其保存到變量d 我希望能夠以未指定的次數執行此操作。 我使用以下代碼創建一個指向d的指針。

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

然后我將此指針推入構造的堆棧(列表)類。 但是每當我推動超過一倍時,它都會改變所有這些(指針是相同的)。

前任。 按 2 並得到一個數組 [2]。 推 3 並得到數組 [3, 3] 而不是 [3, 2]。

你為什么要使用指針?

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));
*pd = d

代替

pd = &d;

你要做的是:

  • 你在堆棧上有double d變量
  • 您創建 double 並將其指針保存在pd變量中
  • 然后將地址保存到 pd 中的 d 變量
  • 然后您將地址從pd on list 保存

這意味着您有變量d的地址列表(列表中的每個對象都是指向d變量的指針)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM