Я собрал пример кода, чтобы приблизиться к вашей задаче. Он читает некоторые целые числа из стандартного ввода и возвращает его в стандартный вывод. В ваших целях вы можете по-разному форматировать вывод и в какой-то момент прочитать / сохранить его из / в файл. Вероятно, есть более краткие, более надежные, более эффективные и более привлекательные способы сделать это, но я собрал все это вместе, чтобы вы начали. Если вы найдете что-то странное для вас, я был бы рад ответить на некоторые вопросы, но идея этого сайта заключается в том, что вы доказываете, что сначала вы приложили некоторые усилия, чтобы найти ответы (например, посетив другие вопросы, прочитав некоторые из них). книги или справочник по C ++ по адресу: https://en.cppreference.com/w/cpp)
#include <iostream>
#include <map>
#include <stdexcept>
using namespace std;
using MyMap = map<int, pair<int, int>>;
MyMap::value_type read_entry() {
int key, v_1, v_2;
bool started_read{false};
if ((cin >> key) && (started_read = true) && (cin >> v_1) && (cin >> v_2)) {
return {key, {v_1, v_2}};
} else if (started_read) {
throw invalid_argument("improper input");
} else {
return {};
}
}
MyMap read_map() {
MyMap myMap;
while (true) {
auto entry = read_entry();
if (cin) {
myMap.insert(move(entry));
} else if (cin.eof()) {
return myMap;
} else {
throw invalid_argument("io error");
}
}
}
void dump_map(const MyMap &myMap) {
for (auto &&value : myMap) {
cout << value.first << "\n"
<< value.second.first << "\n"
<< value.second.second << endl;
}
}
int main() {
cout << "reading map..." << endl;
MyMap myMap;
try {
myMap = read_map();
} catch (invalid_argument e) {
cout << "error encountered reading map: " << e.what() << endl;
return 1;
}
cout << "dumping map..." << endl;
dump_map(myMap);
}