From a9b7e33d895a8fcd2e4c123851be94628b3781fd Mon Sep 17 00:00:00 2001 From: Dmitry Kokorin Date: Fri, 4 Mar 2016 12:26:21 +0300 Subject: [PATCH] grade_school: iteration 1 --- cpp/grade-school/grade_school.cpp | 35 +++++++++++++++++++++++++++++++ cpp/grade-school/grade_school.h | 31 +++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 cpp/grade-school/grade_school.cpp create mode 100644 cpp/grade-school/grade_school.h diff --git a/cpp/grade-school/grade_school.cpp b/cpp/grade-school/grade_school.cpp new file mode 100644 index 0000000..59ddab0 --- /dev/null +++ b/cpp/grade-school/grade_school.cpp @@ -0,0 +1,35 @@ +#include "grade_school.h" + +#include + +namespace grade_school { + +using namespace std; + +static const grade_t empty_grade = grade_t(); + + +school::school() +{ +} + +void school::add(const name_t &name, grade_number_t grade_number) +{ + grade_t &grade = roster_[grade_number]; + grade.insert(upper_bound(grade.begin(), grade.end(), name), name); +} + +const grade_t &school::grade(grade_number_t number) const +{ + if (roster_.count(number)) + return roster_.at(number); + else + return empty_grade; +} + +const roster_t &school::roster() const +{ + return roster_; +} + +} diff --git a/cpp/grade-school/grade_school.h b/cpp/grade-school/grade_school.h new file mode 100644 index 0000000..aff825e --- /dev/null +++ b/cpp/grade-school/grade_school.h @@ -0,0 +1,31 @@ +#pragma once + +#define EXERCISM_RUN_ALL_TESTS + +#include +#include +#include + +namespace grade_school { + +typedef std::string name_t; +typedef std::vector grade_t; +typedef int grade_number_t; +typedef std::map roster_t; + + +class school +{ + roster_t roster_; + +public: + + school(); + + void add(const name_t&, grade_number_t); + + const grade_t &grade(grade_number_t) const; + const roster_t &roster() const; +}; + +}