C++ //練習 10.16 使用lambda編寫你自己版本的biggies。

C++ Primer(第5版) 練習 10.16

練習 10.16 使用lambda編寫你自己版本的biggies。

環境:Linux Ubuntu(云服務器)
工具:vim

?

代碼塊
/*************************************************************************> File Name: ex10.16.cpp> Author: > Mail: > Created Time: Fri 01 Mar 2024 02:49:29 PM CST************************************************************************/#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;string make_plural(size_t ctr, string &word, const string &ending = "s"){int size = word.size();if(ctr <= 1){return word;}else{if(word[size-1] == 's' || word[size-1] == 'x' || (word[size-1] == 'h' && word[size-2] == 's') || (word[size-1] == 'h' && word[size-2] == 'c')){return word + "e" + ending;}else if(word[size-1] == 'y' && (word[size-2] != 'a' && word[size-2] != 'e' && word[size-2] != 'i' && word[size-2] != 'o' && word[size-2] != 'u')){word[size-1] = 'i';return word + "e" + ending;}else if((word[size-3] != 'a' && word[size-3] != 'e' && word[size-3] != 'i' && word[size-3] != 'o' && word[size-3] != 'u') && (word[size-2] != 'a' && word[size-2] != 'e' && word[size-2] != 'i' && word[size-2] != 'o' && word[size-2] != 'u')){if(word[size-1] == 'f'){word[size-1] = 'v';return word + ending;}else if(word[size-2] == 'f' && word[size-1] == 'e'){word[size-2] = 'v';return word + "e" + ending;}}else{return word + ending;}}return word;
}void elimDups(vector<string> &words){sort(words.begin(), words.end());auto end = unique(words.begin(), words.end());words.erase(end, words.end());
}void biggies(vector<string> &words, vector<string>::size_type len){elimDups(words);stable_sort(words.begin(), words.end(), [](const string &a, const string &b){ return a.size() < b.size(); });auto pos = find_if(words.begin(), words.end(), [len](const string &a){ return a.size() >= len; });auto count = words.end() - pos;string str("word");cout<<count<<" "<<make_plural(count, str, "s")<<" of length "<<len<<" or longer"<<endl;for_each(pos, words.end(), [](const string &s){ cout<<s<<" "; });cout<<endl;
}int main(){vector<string> words;string str;cout<<"Enter strings: ";while(cin>>str){words.push_back(str);if(cin.get() == '\n'){break;}}biggies(words, 5);return 0;
}
運行結果顯示如下

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714870.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BERTopic安裝最全教程及報錯處理

BERTopic安裝 BERTopic的安裝比較復雜,直接安裝會報錯 安裝方法1,.whl文件安裝 ERROR: Could not build wheels for hdbscan, which is required to install pyproject.toml-based projects正確安裝流程 查看python能安裝whl的版本pip debug --verbose Compatible tags: 2…

圖表背后的智慧:辦公場景中的數據可視化革新

在現代辦公場景中&#xff0c;數據可視化的應用已經成為提高效率、推動創新的得力工具。無論是管理層還是普通員工&#xff0c;都能從數據可視化中受益匪淺。下面我就以可視化從業者的角度&#xff0c;簡單聊聊這個話題。 首先&#xff0c;數據可視化提升了數據的易讀性與理解性…

docker安裝最新版lastest

docker pull mysql 報missing signature key錯誤問題原因&#xff1a;如果安裝docker用的是yum install docker命令的話&#xff0c;下載下來的docker版本為舊版本&#xff0c;所以會有數字簽名有問題 最新版docker安裝方法&#xff1a; 卸載舊版本 Docker&#xff08;如果已安…

【研發日記】Matlab/Simulink技能解鎖(三)——在Stateflow編輯窗口Debug

文章目錄 前言 State斷點 Transition斷點 條件斷點 按State步進 Watch Data Value Sequence Viewer 分析和應用 總結 前言 見《【研發日記】Matlab/Simulink技能解鎖(一)——在Simulink編輯窗口Debug》 見《【研發日記】Matlab/Simulink技能解鎖(二)——在Function編輯…

AQS(抽象隊列同步器)

什么是AQS? AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是Java中用于實現鎖和同步器的基礎框架。它是一個抽象類&#xff0c;提供了一種靈活且強大的方式來實現各種同步器&#xff0c;如ReentrantLock、Semaphore、CountDownLatch等 AQS實現原理&#xff1f; 1、…

Flink狀態存儲-StateBackend

文章目錄 前言一、MemoryStateBackend二、FSStateBackend三、RocksDBStateBackend四、StateBackend配置方式五、狀態持久化六、狀態重分布OperatorState 重分布KeyedState 重分布 七、狀態過期 前言 Flink是一個流處理框架&#xff0c;它需要對數據流進行狀態管理以支持復雜的…

10個技巧,3分鐘教會你高效尋找開源項目

作為程序員&#xff0c;不論是開發還是學習&#xff0c;肯定會用到開源項目&#xff0c;那么怎么快速在開源網站找到這些項目呢&#xff1f; 常用的開源網站有&#xff1a;github 和 gitee github是全球最大的開源社區&#xff0c;今天就以github為例&#xff0c;演示一下 gi…

【vue】vue中數據雙向綁定原理/響應式原理,mvvm,mvc、mvp分別是什么

關于 vue 的原理主要有兩個重要內容&#xff0c;分別是 mvvm 數據雙向綁定原理&#xff0c;和 響應式原理 MVC&#xff08;Model-View-Controller&#xff09;&#xff1a; Model&#xff08;模型&#xff09;&#xff1a;表示應用程序的數據和業務邏輯。View&#xff08;視圖&…

edge 安裝筆記

依賴項&#xff1a; jukebox 下載代碼GitHub - rodrigo-castellon/jukebox 拷貝到根目錄即可&#xff0c;文件夾留一個根目錄jukebox vqvae_cache_path cache_dir "/vqvae.pth.tar" prior_cache_path cache_dir "/prior_level_2.pth.tar"

JavaWeb之 Servlet(2萬6千字詳解)

目錄 前言1. Servlet 簡介2. Servlet 前世今生3. Servlet 執行流程4. Servlet 快速入門5. 兩種配置 Servlet程序 URL的方式5.1 使用 注解來配置 Servlet程序 的 URL5.1.1 urlPattern 的配置規則精確匹配目錄匹配&#xff1a;使用 * 符號代表任意路徑擴展名匹配任意匹配 5.1.2 小…

【MATLAB】語音信號識別與處理:SG濾波算法去噪及譜相減算法呈現頻譜

1 基本定義 SG 濾波算法&#xff08;Savitzky - Golay 濾波算法&#xff09;是一種數字信號處理算法&#xff0c;用于對信號進行平滑處理。該算法利用最小二乘法擬合局部數據段&#xff0c;然后用擬合的函數來估計每個數據點的值&#xff0c;從而實現平滑處理。 SG 濾波算法的…

redis05 sprngboot整合redis

redis的Java客戶端 整合步驟 添加redis的pom依賴 <!-- 引入redis依賴 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency><!-- 引入redis連…

51單片機學習day02

基于普中的stc89c52&#xff0c; 串口&#xff1a; 通訊接口&#xff0c;51單片機自帶UART&#xff08;通用異步收發器&#xff09;&#xff0c;可實現窗口通訊。 硬件電路&#xff1a; 簡單雙向串口通信有兩根通信線&#xff08;發送端TXD和接收端RXD&#xff09;&#xff0…

HelixToolKit的模型旋轉操作

前面加載了模型以后&#xff0c;鼠標拖動和縮放比較好操作&#xff1b;但是旋轉似乎沒有&#xff0c; 操作了一陣&#xff0c;也不是沒有&#xff0c;應該是還不熟悉&#xff1b; 旋轉的指示器在右下角&#xff0c;現在U面看到正面&#xff0c; 想看一下模型的背面&#xff0…

【Java項目介紹和界面搭建】拼圖小游戲——添加圖片

&#x1f36c; 博主介紹&#x1f468;?&#x1f393; 博主介紹&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高興認識大家~ ?主攻領域&#xff1a;【滲透領域】【應急響應】 【Java】 【VulnHub靶場復現】【面試分析】 &#x1f389;點贊?評論?收藏 …

扼殺網絡中的環路:STP、RSTP、MSTP

目錄 前言&#xff1a; 一、STP&#xff08;Spanning Tree Protocol&#xff09; 1.1 STP功能 1.2 STP應用 二、RSTP&#xff08;Rapid Spanning Tree Protocol&#xff09; 2.1 RSTP功能 2.2 RSTP應用 三、MSTP&#xff08;Multiple Spanning Tree Protocol&#xff0…

Angular 由一個bug說起之四:jsonEditor使用不當造成的bug

一&#xff1a;問題 項目中使用了一個JSON第三方庫&#xff1a; GitHub - josdejong/jsoneditor: A web-based tool to view, edit, format, and validate JSON 當用戶編輯JSON格式的數據&#xff0c;查找替換時&#xff1a; 用戶的期望結果是&#xff1a;$$ 被替換為$$_text&a…

[物聯網] OneNet 多協議TCP透傳

[物聯網] OneNet 多協議TCP透傳 STM32物聯網–ONENET云平臺的多協議接入產品創建 : https://blog.csdn.net/qq_44942724/article/details/134492924 Onenet tcp 透傳 : https://blog.csdn.net/flyme2010/article/details/107086001 tcp服務端測試工具 : http://tcp.xnkiot.com/…

zephyr學習

zephyr內核對象學習 定時器 類似linux的定時器&#xff0c; 可以分別設置第一次到期時間和后續的周期觸發時間&#xff0c; 可以注冊到期回調和停止回調 還有一個計數狀態&#xff0c;用于標記timer到期了多少次 duration&#xff1a;設定timer第一次到期的時間。 period: …

SpringBoot3.2.0整合MyBatis-plus的相關問題及處理方法

SpringBoot3.2.0整合MyBatis-plus的相關問題 文章目錄 SpringBoot3.2.0整合MyBatis-plus的相關問題1. build.gradle2. mybatis-plus整合問題1. 錯誤描述2. 問題分析及解決1. 原因分析2. 解決方式 Springboot3.2.0 GA版發布于 2023-11-24 環境&#xff1a;SpringBoot3.2.0Gradle…