C++之STL(十)

1、適配器

2、函數適配器

#include <iostream>
using namespace std;#include <algorithm>
#include <vector>
#include <functional>bool isOdd(int n)
{return n % 2 == 1;
}
int main() {int a[] = {1, 2, 3, 4, 5};vector <int> v(a, a + 5);cout << count_if(v.begin(), v.end(), isOdd) << endl;// binder2nd將二元函數對象modulus轉換為醫院函數對象。// binder2nd(op, value)(param)相當于op(param, value)cout << count_if(v.begin(), v.end(), binder2nd(modulus<int>(), 2)) << endl;// binder1st(op, value)(param)相當于op(value, param)cout << count_if(v.begin(), v.end(), binder1st(less<int>(), 4)) << endl;return 0;
}// 輸出
3
3
1

3、針對成員函數的函數適配器

#include <iostream>
using namespace std;#include <algorithm>
#include <vector>
#include <functional>
#include <string>class Person
{
public:Person(const string& name) : name_(name){}void print() const{cout << name_ << endl;}void printWithPrefix(string prefix) const{cout << prefix << name_ << endl;}private:string name_;
};void foo(const vector<Person>& v)
{for_each(v.begin(), v.end(), mem_fun_ref(&Person::print));for_each(v.begin(), v.end(), binder2nd(mem_fun_ref(&Person::printWithPrefix), "Person: "));
}void foo2(const vector<Person*>& v)
{for_each(v.begin(), v.end(), mem_fun(&Person::print));for_each(v.begin(), v.end(), binder2nd(mem_fun(&Person::printWithPrefix), "Person: "));
}
int main() {vector<Person> v;v.push_back(Person("tom"));v.push_back(Person("jer"));foo(v);vector<Person*> v2;v2.push_back(new Person("tom"));v2.push_back(new Person("jer"));foo2(v2);return 0;
}// 輸出
tom
jer
Person: tom
Person: jer
tom
jer
Person: tom
Person: jer

4、針對一般函數的函數適配器

#include <iostream>
using namespace std;#include <algorithm>
#include <vector>
#include <functional>
#include <string>
#include <cstring>int main() {char* a[] = {"", "BBB", "CCC"};vector<char*> v(a, a + 2);vector<char*>::iterator it;it = find_if(v.begin(), v.end(), binder2nd(ptr_fun(strcmp), ""));if (it != v.end()){cout << *it << endl;}return 0;
}
// 輸出
BBB

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

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

相關文章

ONLYOFFICE 8.1版本桌面編輯器測評:重塑辦公效率的巔峰之作

在數字化辦公日益普及的今天&#xff0c;一款高效、便捷且功能強大的桌面編輯器成為了職場人士不可或缺的工具。ONLYOFFICE 8.1版本桌面編輯器憑借其卓越的性能和豐富的功能&#xff0c;成功吸引了眾多用戶的目光。今天&#xff0c;我們將對ONLYOFFICE 8.1版本桌面編輯器進行全…

使用el-amap-info-window遇到的問題

使用的這個庫https://github.com/yangyanggu/vue-amap 想要滾動amapInfoWindow里的內容&#xff0c;但不觸發地圖縮放 默認滾動amapInfoWindow里的內容&#xff0c;會觸發地圖縮放。看了C站一個大佬的文章解決了。 amapInfoWindow會自動滾動到頂部 我的amapInfoWindow里面用了…

【智能制造-4】機器人控制器

機器人控制器中分哪幾個模塊&#xff1f; 機器人控制器通常由以下幾個主要模塊組成: 運動控制模塊: 負責機器人各軸電機的位置、速度、加速度等控制 實現機器人末端執行器的精確定位和運動控制傳感器接口模塊: 負責機器人各種傳感器信號的采集和處理 為運動控制、環境感知等提…

Python-正則表達式

目錄 一、打開正則表達式 二、正則表達式的使用 1、限定符 &#xff08;1&#xff09;x*&#xff1a;*表示它前面的字符y 可以有0個或多個&#xff1b; &#xff08;2&#xff09;x&#xff1a;表示它前面的字符可以出現一次以上&#xff1b;&#xff08;只可以匹配多次&…

電鍍用開關電源技術詳解

1 引言 在電鍍行業里&#xff0c;一般要求工作電源的輸出電壓較低&#xff0c;而電流很大。電源的功率要求也比較高&#xff0c;一般都是幾千瓦到幾十千瓦。目前&#xff0c;如此大功率的電鍍電源一般都采用晶閘管相控整流方式。其缺點是體積大、效率低、噪音高、功率因數低、…

[CocosCreator]CocosCreator網絡通信:https + websocket + protobuf

環境 cocos creator版本&#xff1a;3.8.0 開發語言&#xff1a;ts 操作系統&#xff1a;windows http部分 直接使用 XMLHttpRequest 創建http請求 // _getHttpUrl 方法自己寫字符串拼接public httpPostJsonRequest(uri: string, headData: any, data: any, cb: Function…

2024年6月大眾點評深圳餐飲店鋪POI分析18萬家

2024年6月大眾點評深圳餐飲店鋪POI共有178720家 店鋪POI點位示例&#xff1a; 店鋪id G9TSD2JvdLtA7fdm 店鋪名稱 江味龍蝦館(南山店) 十分制服務評分 8.8 十分制環境評分 8.8 十分制劃算評分 8.6 人均價格 128 評價數量 12840 店鋪地址 南山大道與桂廟路交叉口西北角…

微信小程序 點擊左上角返回彈窗提示

業務需求&#xff1a;當頁面表單沒有提交直接返回時&#xff0c;要提示用戶是否保存當前信息&#xff0c;如果已經提交就不提示了。 由于微信小程序是無法監聽右上角按鈕返回事件。 所以就換個思路 小程序提供了如下兩個Api wx.enableAlertBeforeUnload(Object object)&…

Python入門-基礎知識-編程規范

1.縮進 在編程語言中&#xff0c;代碼之間往往存在著一定的邏輯關系和層次關系。C語言和Java語言等 用“{}”分隔代碼塊&#xff0c;而Python用的是縮進和冒號。Python代碼的縮進可以使用空格鍵或 Tab鍵來實現&#xff0c;通常情況下以4個空格或1個制表符作為1個縮進量。Pytho…

TCP協議中的三次握手和四次揮手機制

TCP協議中的三次握手和四次揮手機制 TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;是一種面向連接的、可靠的、基于字節流的通信協議&#xff0c;它的三次握手和四次揮手機制是建立和斷開連接的關鍵步驟。 三次握手&#xff1a; 第一次…

等保測評與網絡安全法規的關聯:構建信息安全的法律與技術雙重保障

在信息化高速發展的今天&#xff0c;網絡安全已經成為國家安全、社會穩定和經濟發展的重要基石。為了保障網絡空間的安全和穩定&#xff0c;我國制定了一系列網絡安全法規&#xff0c;其中最為關鍵的就是《中華人民共和國網絡安全法》。與此同時&#xff0c;等保測評&#xff0…

第 2 章SwiftUI 入門及文本操作

如果你之前使用過 UIKit,你會發現TextSwiftUI 中的控件與 UIKit 中的非常相似UILabel。它是一個允許你顯示一行或多行文本的視圖。此Text控件不可編輯,但可用于在屏幕上顯示只讀信息。例如,如果你想顯示一條屏幕消息,你可以使用它Text來實現它。 在本章中,我們將向您展示…

RAG開發中常見的12個痛點及解決方案

受到 Barnett 等人論文《構建檢索增強生成系統的七大挑戰》啟發&#xff0c;本文將探討論文中提及的七大挑戰及在開發 RAG&#xff08;檢索增強生成&#xff09;流程中常遇到的五個額外難題。更為重要的是&#xff0c;我們將深入討論解決這些 RAG 難題的策略&#xff0c;以便我…

使用 WebGL 創建 3D 對象

WebGL Demohttps://mdn.github.io/dom-examples/webgl-examples/tutorial/sample5/index.html 現在讓我們給之前的正方形添加五個面從而可以創建一個三維的立方體。最簡單的方式就是通過調用方法 gl.drawElements() 使用頂點數組列表來替換之前的通過方法gl.drawArrays() 直接…

TinTin Web3 動態精選:Aptos Builder Jam 亞洲首站即將開啟,Solana 實現全網連接

TinTin 快訊由 TinTinLand 開發者技術社區打造&#xff0c;旨在為開發者提供最新的 Web3 新聞、市場時訊和技術更新。TinTin 快訊將以周為單位&#xff0c; 匯集當周內的行業熱點并以快訊的形式排列成文。掌握一手的技術資訊和市場動態&#xff0c;將有助于 TinTinLand 社區的開…

檢測SD NAND文件系統異常和修復的方法

目錄 1、打開命令提示符&#xff1a; 2、運行chkdsk命令&#xff1a; 3、命令參數說明&#xff1a; chkdsk是Windows中的一個命令行工具&#xff0c;用于檢查磁盤上的文件系統錯誤和修復壞塊。MK米客方德為您提供指導&#xff0c;以下是使用chkdsk的步驟&#xff1a; 1、打開…

綜合IT運維管理解決方案

綜合IT運維管理解決方案 在信息化和數字化高速發展的時代&#xff0c;企業的IT運維管理已經成為保障業務連續性和提升運營效率的關鍵環節。高效的IT運維管理不僅能夠降低運維成本&#xff0c;還能提升服務質量和用戶滿意度。本文將詳細介紹綜合IT運維管理解決方案&#xff0c;…

富格林:正規平臺曝光出金招數

富格林悉知&#xff0c;在現貨黃金中&#xff0c;正規盈利出金是要建立在無落入誘導風險的情況下實現的&#xff0c;投資者要關注的不僅僅是如何進行盈利&#xff0c;還要掌握正規平臺曝光的交易技巧或經驗。對于新手投資者來說&#xff0c;學習投資的基礎知識&#xff0c;提升…

eBPF技術揭秘:DeepFlow如何引領故障排查,提升運維效率

DeepFlow 實戰&#xff1a;eBPF 技術如何提升故障排查效率 目錄 DeepFlow 實戰&#xff1a;eBPF 技術如何提升故障排查效率 微服務架構系統中各個服務、組件及其相互關系的全景 零侵擾分布式追蹤&#xff08;Distributed Tracing&#xff09;的架構和工作流程 關于零侵擾持…

華為od 2024 | 什么是華為od,od 薪資待遇,od機試題清單

目錄 專欄導讀華為OD機試算法題太多了&#xff0c;知識點繁雜&#xff0c;如何刷題更有效率呢&#xff1f; 一、邏輯分析二、數據結構1、線性表① 數組② 雙指針 2、map與list3、隊列4、鏈表5、棧6、滑動窗口7、二叉樹8、并查集9、矩陣 三、算法1、基礎算法① 貪心思維② 二分查…