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

📄 ex16_6.cpp

📁 The source code for "C++ Solutions". This book is a companion to the book that is widely recognized
💻 CPP
字号:
/* Code for exercise 16.6.
 | 
 | "C++ Solutions--Companion to The C++ Programming Language, Third Edition"
 | by David Vandevoorde; Addison-Wesley 1998; ISBN 0-201-30965-3.
 |
 | Permission to use, copy, modify, distribute and sell this software
 | and its documentation for any purpose is hereby granted without fee.
 | The author makes no representations about the suitability of this
 | software for any purpose.  It is provided "as is" without express or
 | implied warranty.
 `----------------------------------------------------------------------*/

#include <algorithm>
#include <cctype>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>

using std::string;

// Utility function-object to convert alphabetic characters
// to lower-case:
struct LowerCase {
   char operator()(char const &c) const
      { return std::tolower(c); }
};

char const *dont_like[] = {
   "kumquat", "pomelo", "starfruit", "walnut", "watermelon",
   0 };

void process_data(std::vector<string> &fruits) {
   std::sort(fruits.begin(), fruits.end());
   std::vector<string>::iterator p = fruits.begin();
   for (int i = 0; (p!=fruits.end()) and dont_like[i];) {
      int order = p->compare(dont_like[i]);
      if (order>0) // *p "comes after" dont_like[i]
         ++i;
      else
      if (order<0)
         ++p;
      else // order==0, i.e. *p==dont_like[i]
         p = fruits.erase(p);
   }
   using std::copy;
   copy(fruits.begin(), fruits.end(),
        std::ostream_iterator<string>(std::cout, "\n"));
}

int main() {
   string fruit;
   std::vector<string> fruits;
   std::cout << "Enter fruit names. Terminate with \".\" (period).\n";
   while((std::cin >> fruit) && (fruit[0]!='.')) {
      std::transform(fruit.begin(), fruit.end(),
                     fruit.begin(), LowerCase());
      fruits.push_back(fruit);
   }
   process_data(fruits);
   return 0;
}

⌨️ 快捷键说明

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