将标准输入的向量存储为双精度

时间:2018-09-10 23:36:42

标签: c++ c++11 vector

双打位于文本文件中,并以空格分隔。它们是(x,y)线。下面的代码在存储后将不读取该行并打印顶点。

代码:

int main(int argc, char *argv[]) {

    vector < pair < double, double > > verticies;
    double firstDouble , secondDouble;

    for ( int i = 0; i < 10; ++i ) {

        std::cin >> getline(cin, firstDouble, secondDouble);
        verticies.insert(firstDouble, secondDouble);
        std::cout << verticies::at(i) << endl;
    }
} 

1 个答案:

答案 0 :(得分:3)

您在这里遇到几个问题:

  • 您错误地使用了std::getline。只需编写std::cin >> firstDouble >> secondDouble
  • insert用于在向量的中间插入元素。使用push_backemplace_back将元素附加到向量。
  • insertpush_back采用要插入的元素的值,在这种情况下为一对双精度值(两个双精度值不会自动变为一对双精度值)。因此,您需要使用std::make_pair构造一个对或使用emplace_back,这将把参数转发给该对的构造函数。
  • verticies::at(i)应该是verticies.at(i)
  • 默认情况下,<<运算符仅知道如何打印基本类型(如int和double)。要打印其他类型,您需要像std::cout << verticies.at(i).first << ' ' << verticies.at(i).second << '\n'一样单独打印其成员,或者使<<运算符重载以打印一对。

(您拼写的“顶点”错误。)