0
点赞
收藏
分享

微信扫一扫

HJ8 合并表记录 HJ08


​​HJ8合并表记录​​

#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>

HJ8 合并表记录 HJ08_头文件

 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;

举报

相关推荐

0 条评论