1

double標準入力からa を読み取り、それを variable に保存していますd。これを不定期にできるようにしたいです。次のコードを使用して、へのポインターを作成しますd

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

次に、このポインターを構築済みのスタック (リスト) クラスにプッシュします。しかし、複数の double をプッシュするたびに、それらすべてが変更されます (ポインターは同じです)。

元。2 を押して配列 [2] を取得します。3 を押して、[3, 2] の代わりに配列 [3, 3] を取得します。

4

2 に答える 2

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));
于 2012-12-11T23:56:00.127 に答える
1
*pd = d

それ以外の

pd = &d;

あなたがすることは次のとおりです。

  • スタックにdouble d変数があります
  • double を作成し、そのポインタをpd変数に保存します
  • 次に、アドレスをpdのd変数に保存します
  • pd次に、リストからアドレスを保存します

これは、変数へのアドレスのリストがあることを意味しますd(リスト上のすべてのオブジェクトは変数へのポインターdです)。

于 2012-12-11T23:50:13.867 に答える