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 sort();
- std::vector<std::string>get_name();
- std::vector<double>get_age();
- 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::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;
- }
- }
- std::vector<std::string> Name_pairs::get_name(){
- assert(name_.size() != 0);
- return name_;
- }
- std::vector<double> Name_pairs::get_age() {
- assert(age_.size() != 0);
- return age_;
- }
- std::ostream& operator<<(std::ostream& os, Name_pairs& info) {
- const std::vector<std::string>& names = info.get_name();
- const std::vector<double>& ages = info.get_age();
- for (size_t i = 0; i < names.size(); ++i) {
- os << "Name: " << names[i] << ", Age: " << ages[i] << std::endl;
- }
- return os;
- }
- bool operator==(Name_pairs& one, Name_pairs& two) {
- return one.get_name() == two.get_name() && one.get_age() == two.get_age();
- }
- bool operator!=(Name_pairs& one, Name_pairs& two) {
- return !(one == two);
- }
- int main() {
- Name_pairs person_;
- person_.read_age(25);
- person_.read_names("Fil");
- Name_pairs person1_(person_);
- person_.read_age(25);
- person_.read_names("Kalik");
- person_.read_names("Dvalik");
- person_.read_age(22);
- //before sort
- std::cout << "Person_one: " << std::endl << person_ << std::endl;
- person_.sort();
- //after sort
- std::cout << "Person_one: " << std::endl << person_ << std::endl;
- std::cout << "Person_two: " << std::endl << person1_;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement