Хранение двойников в векторе от стандартного ввода - PullRequest
0 голосов
/ 11 сентября 2018

Двойники находятся в текстовом файле и разделены пробелом. Это (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 голосов
/ 11 сентября 2018

У вас есть несколько проблем здесь:

  • Вы использовали std::getline неправильно.Просто введите std::cin >> firstDouble >> secondDouble.
  • insert используется для вставки элементов в середину вектора.Используйте push_back или emplace_back для добавления элементов к вектору.
  • insert и push_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', либо перегрузить оператор << для печати пары.

(Вы написали "вершины" неправильно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...