Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <cassert>
- #include <algorithm>
- #include <map>
- class Name_pairs {
- public:
- Name_pairs(std::string name, double age);
- Name_pairs() = default;
- void read_names(std::string name);
- void read_age(double age);
- void print() const;
- void sort();
- private:
- std::vector<std::string>name_;
- std::vector<double>age_;
- };
- Name_pairs::Name_pairs(std::string name, double age) : name_{ name }, age_{ age } {
- assert(name_.size() == age_.size());
- assert(name_.size() != 0 && age>= 0);
- }
- void Name_pairs::read_names(std::string name){
- assert(!name.empty());
- name_.push_back(name);
- }
- void Name_pairs::read_age(double age){
- assert(age >= 0);
- age_.push_back(age);
- }
- void Name_pairs::print() const{
- assert(name_.size() == age_.size());
- if (name_.empty() || age_.empty()) {
- std::cout << "No data to print." << std::endl;
- return;
- }
- for (size_t i = 0; i != name_.size() && i != age_.size(); ++i) {
- std::cout << name_[i] << " " << age_[i] << std::endl;
- }
- }
- void Name_pairs::sort() {
- assert(name_.size() == age_.size());
- if (name_.empty() || age_.empty()) {
- std::cout << "No data to sort." << std::endl;
- return;
- }
- std::vector<std::pair<std::string, double>>temp_pair;
- for (size_t i = 0; i != name_.size(); ++i) {
- temp_pair.push_back(std::make_pair(name_[i], age_[i]));
- }
- std::sort(temp_pair.begin(), temp_pair.end(), [](const auto& one, const auto& two) {
- return one.first < two.first;
- });
- for (size_t i = 0; i < temp_pair.size(); ++i) {
- name_[i] = temp_pair[i].first;
- age_[i] = temp_pair[i].second;
- }
- }
- int main() {
- Name_pairs person_{"Victory", 35 };
- person_.read_age(25);
- person_.read_names("K");
- person_.read_names("Adele");
- person_.read_age(25);
- person_.read_names("Pavel");
- person_.read_age(63);
- person_.print();
- person_.sort();
- person_.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement