⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tele.cpp

📁 BigC++的源码
💻 CPP
字号:
#include <string>
#include <iostream>
#include <map>

using namespace std;

/**
   TelephoneDirectory maintains a map of name/number pairs.
*/
class TelephoneDirectory 
{
public:
   /**
      Add a new name/number pair to database.
      @param name the new name
      @param number the new number
   */
   void add_entry(string name, int number);

   /**
      Find the number associated with a name.
      @param name the name being searched
      @return the associated number, or zero 
      if not found in database
   */
   int find_entry(string name) const;

   /**
      Print all entries on given output stream
      in name : number format ordered by name.
      @param out the output stream
   */
   void print_all(ostream& out) const;

   /**
      Print all entries on given output stream
      in number : name format ordered by number.
      @param out the output stream
   */
   void print_by_number(ostream& out) const;
private:
   map<string, int> database;
   typedef map<string, int>::const_iterator iterator;
};

void TelephoneDirectory::add_entry(string name, int number)
{
   database[name] = number;
}

int TelephoneDirectory::find_entry(string name) const
{
   iterator p = database.begin();
   if (p != database.end())
      return p->second;
   return 0; // not found
}

void TelephoneDirectory::print_all(ostream& out) const
{
   iterator current = database.begin();
   iterator stop = database.end();
   while (current != stop)
   {
      out << current->first << " : " << current->second << "\n";
      ++current;
   }
}

void TelephoneDirectory::print_by_number(ostream& out) const
{
   multimap<int, string> inverse_database;
   typedef multimap<int, string>::iterator miterator;
   iterator current = database.begin();
   iterator stop = database.end();
   while (current != stop)
   {
      inverse_database.insert(multimap<int, string>
         ::value_type(current->second, current->first));
      ++current;
   }
   miterator icurrent = inverse_database.begin();
   miterator istop = inverse_database.end();
   while (icurrent != istop)
   {
      cout << icurrent->first << " : " << icurrent->second << "\n";
      ++icurrent;
   }
}

int main()
{
   TelephoneDirectory data;
   data.add_entry("Fred", 7235591);
   data.add_entry("Mary", 3841212);
   data.add_entry("Sarah", 3841212);
   cout << "Number for Fred " << data.find_entry("Fred") << "\n";
   cout << "Printing by name \n";
   data.print_all(cout);
   cout << "Printing by number \n";
   data.print_by_number(cout);
   return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -