Skip to content

Commit 518aff3

Browse files
committed
4u
1 parent 73b906f commit 518aff3

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

Diff for: cpp/4.cpp

+10-14
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,16 @@
33
namespace {
44
auto parse(const std::string &s) {
55
auto it = std::find(s.begin(), s.end(), ',');
6-
std::string_view sec1{s.begin(), it};
7-
std::string_view sec2{std::next(it, 1), s.end()};
8-
std::tuple<long, long, long, long> out{};
9-
{
10-
size_t hy = sec1.find('-');
11-
std::from_chars(sec1.data(), sec1.data() + hy, std::get<0>(out));
12-
std::from_chars(sec1.data() + hy + 1, sec1.data() + sec1.size(),
13-
std::get<1>(out));
14-
}
15-
{
16-
size_t hy = sec2.find('-');
17-
std::from_chars(sec2.data(), sec2.data() + hy, std::get<2>(out));
18-
std::from_chars(sec2.data() + hy + 1, sec2.data() + sec2.size(),
19-
std::get<3>(out));
6+
std::array<std::string_view, 2> sec;
7+
sec[0] = std::string_view{s.begin(), it};
8+
sec[1] = std::string_view{std::next(it, 1), s.end()};
9+
10+
std::array<long, 4> out{};
11+
for (size_t i = 0; const auto &sv : sec) {
12+
size_t hy = sv.find('-');
13+
std::from_chars(sv.data(), sv.data() + hy, out[i]);
14+
std::from_chars(sv.data() + hy + 1, sv.data() + sv.size(), out[i + 1]);
15+
i += 2;
2016
}
2117
return out;
2218
}

0 commit comments

Comments
 (0)