#include<iostream>
#include<map>
using namespace std;
int main(int argc, char *argv[]) {
int k, v;
int n = 0;
std::map<int, int> m;
cin >> n;
while (n-- > 0) {
cin >> k;
cin >> v;
if (m.find(k) == m.end()) {
m[k] = v;
} else {
m[k] += v;
}
}
for (auto it = m.begin(); it != m.end(); ++it) {
std::cout << it->first << " " << it->second << "\n";
}
return 0;
}
实际读取数据一般是从文件, 用std::ifstream, 需要引入fstream头文件 #include <fstream>
main.cpp
#include <iostream>
#include <fstream>
#include <sstream>
#include <map>
class HJ08 {
public:
static std::string file_get_contents(const std::basic_string<char>& path) {
std::ifstream file;
file.open(path, std::ios_base::in);
if (!file.is_open()) {
std::cout << "打开\"" << path << "\"失败";
return "";
}
std::stringstream s;
s << file.rdbuf();
file.close();
return s.str();
}
static std::map<int, int> mergedPairs(const std::basic_string<char>& path) {
std::map<int, int> m;
std::ifstream ifs;
ifs.open(path, std::ios_base::in);
if (!ifs.is_open()) {
std::cout << "打开\"" << path << "\"失败";
return m;
}
int n = 0;
ifs >> n;
int k, v;
while (n-- > 0) {
ifs >> k;
ifs >> v;
if (m.find(k) == m.end()) {
m[k] = v;
} else {
m[k] += v;
}
}
ifs.close();
return m;
}
};
int main() {
// std::string content = HJ08::file_get_contents("../input_01.txt");
// std::cout << content;
std::map<int, int> m;
m = HJ08::mergedPairs("../input_01.txt");
// std::map<int, int>::const_iterator
for (auto it = m.begin(); it != m.end(); ++it) {
std::cout << it->first << " " << it->second << "\n";
}
// for (auto &pair : m) {
// std::cout << pair.first << " " << pair.second << "\n";
// }
return 0;
}
pair<int, int>i;
cin >> i.first >> i.second;
m[i.first] += i.second;