如何从用户输入中收集双精度值并使用指向“向量”的“指针”打印它们? [重复]

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

这是一段从用户输入中获取一些

double
,然后打印它们的代码。
输入看起来像这样
1 2 3 4.5 x
,其中
x
是任意非
double
,用于打破第一个
for
循环。
然而,它出现了段错误!

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<double> *b;
    for (double i; cin >> i;)
    {
        b->push_back(i);
    }

    for (double j:(*b))
    {
        cout << j << endl;
    }
    return 0;
}
c++ for-loop pointers vector iostream
1个回答
0
投票

它会出现段错误,因为

b
指针没有指向任何东西。取消引用未初始化的指针会导致未定义的行为,其中可能包括分段错误。

放下指针,只使用向量。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<double> b;
    for (double i; cin >> i;)
    {
        b.push_back(i);
    }

    for (double j : b)
    {
        cout << j << endl;
    }
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.