C++高頻知識點(十七)

文章目錄

  • 81. 你對智能指針的了解
  • 82. 一元、二元仿函數的區別和使用背景
    • 一元仿函數
    • 二元仿函數
  • 83. 描述Linux下文件刪除的原理
  • 84. 什么是菱形繼承?有什么問題,怎么解決?
    • 解決菱形繼承問題
  • 85. IO多路復用是什么?
    • select
    • poll
    • epoll
    • select 圖示
    • epoll 圖示
    • epoll 優越的數據結構(紅黑樹+雙向鏈表)

81. 你對智能指針的了解

在這里插入圖片描述

82. 一元、二元仿函數的區別和使用背景

一元仿函數

在這里插入圖片描述

#include <vector>
#include <algorithm>
#include <iostream>// 一元謂詞:判斷整數是否為偶數
class IsEven {
public:bool operator()(int x) const {return x % 2 == 0;}
};int main() {std::vector<int> vec = {1, 2, 3, 4, 5, 6};// 使用find_if和一元謂詞查出第一個偶數// std::find_if 是 C++ 標準庫中的一個算法,用來在容器(比如 std::vector)中查找第一個符合給定條件的元素。// template< class InputIterator, class UnaryPredicate >// InputIterator find_if( InputIterator first, InputIterator last, UnaryPredicate pred );/*InputIterator first:容器的起始迭代器。對于 std::vector,這通常是 vec.begin(),即指向容器第一個元素的迭代器。InputIterator last:容器的結束迭代器。對于 std::vector,這通常是 vec.end(),即指向容器最后一個元素后面的位置。UnaryPredicate pred:一個 一元謂詞(返回 bool 的函數或函數對象),它定義了要查找的條件*/auto it = std::find_if(vec.begin(), vec.end(), IsEven());if (it != vec.end()) {std::cout << "The first even number is: " << *it << std::endl;} else {std::cout << "No even number found." << std::endl;}return 0;
}

在這里插入圖片描述

二元仿函數

在這里插入圖片描述

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional> // 包含std::abs// 定義一個比較函數,用于比較兩個整數的絕對值
struct AbsCompare {bool operator()(int a, int b) const {// 如果 a 的絕對值小于 b 的絕對值,返回 true;否則返回 falsereturn std::abs(a) < std::abs(b);}
};int main() {std::vector<int> vec = {3, -5, 2, -1, 4};std::sort(vec.begin(), vec.end(), AbsCompare()); // 使用三元函數進行排序for (int num : vec) {std::cout << num << ' ';}std::cout << std::endl;return 0;
}

在這里插入圖片描述

83. 描述Linux下文件刪除的原理

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

84. 什么是菱形繼承?有什么問題,怎么解決?

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

解決菱形繼承問題

C++ 通過 虛擬繼承(Virtual Inheritance)來解決菱形繼承問題。虛擬繼承使得通過多個路徑繼承自同一個基類時,基類只會有一份副本。

在這里插入圖片描述

#include <iostream>class A {
public:int x;A() : x(10) {}void print() { std::cout << "A: " << x << std::endl; }
};class B : virtual public A { 
public:B() { x = 20; } 
};class C : virtual public A { 
public:C() { x = 30; } 
};class D : public B, public C { 
public:void show() { std::cout << "D: " << x << std::endl; }
};int main() {D d;d.show();return 0;
}

在這里插入圖片描述
在這里插入圖片描述

85. IO多路復用是什么?

IO多路復用(I/O Multiplexing)是指在單個線程或進程中同時管理多個輸入/輸出操作的能力,通常用于處理多個客戶端連接,避免為每個連接創建一個線程或進程。常見的 IO多路復用 系統調用有 select、poll 和 epoll。它們的作用都是監視多個文件描述符,并在其中的某個文件描述符準備好進行操作時,通知應用程序。

select

select 是最早實現的 I/O 多路復用機制,在 UNIX 和 Linux 系統中都廣泛存在

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

在這里插入圖片描述

poll

在這里插入圖片描述
在這里插入圖片描述

epoll

在這里插入圖片描述

在這里插入圖片描述

select 圖示

在這里插入圖片描述
在這里插入圖片描述

epoll 圖示

在這里插入圖片描述

epoll 優越的數據結構(紅黑樹+雙向鏈表)

epoll 的優越性主要來自其 高效的數據結構設計,特別是 紅黑樹 和 雙向鏈表 的組合。它們使得 epoll 在性能和擴展性上相比于傳統的 select 和 poll 更加優秀。接下來,我們將詳細討論這些數據結構如何幫助 epoll 提高性能,并解決了 select 和 poll 的一些問題。

在這里插入圖片描述

之后我會持續更新,如果喜歡我的文章,請記得一鍵三連哦,點贊關注收藏,你的每一個贊每一份關注每一次收藏都將是我前進路上的無限動力 !!!↖(▔▽▔)↗感謝支持!

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

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

相關文章

如何優雅的使用進行參數校驗

在spring里面有一個注解 Validated可以在方法的入參里面這樣寫//方法 getActivityFlag(RequestBody Validated QueryActivityDto queryActivityDto) //參數詳情NotBlank(message "userId不能為空")private String userId;NotNull(message "storeId不能為空&q…

Java學習第一百一十部分——CI/CD

目錄 一、前言簡介 二、基本信息 三、優勢價值 四、核心流程 五、技術棧&#xff08;工具矩陣&#xff09; 六、最佳實踐 七、與DevOps關系 八、挑戰對策 九、使用建議 十、總結歸納 一、前言簡介 CI/CD 的本質是&#xff1a;通過自動化流水線&#xff0c;實現代碼從提…

關于 Cocoapods 使用

一、Podfile & .podspec 文件 1、Podfile 1.1. 什么是 pod 簡單來說&#xff0c;一個 pod 就是 xcode 里面的一個 dependency&#xff1a; Anyway&#xff0c;pod 就是第三方庫的意思。一個 pod 就是指一個第三方庫。 1.2. Podfile 有什么用 Podfile 可以理解為就是…

編程速遞:2025 年巴西 Embarcadero 會議,期待您的到來

每個英雄都有一段充滿奮斗的旅程&#xff0c;這段旅程引領他走向榮耀&#xff0c;而開發者英雄的旅程是2025年巴西Embarcadero大會的重點&#xff0c;以慶祝Delphi成立30周年。網站現已上線巴西Embarcadero在世界上最受期待的Delphi發展英雄會議召開前90天&#xff0c;推出了Em…

DevOps簡單教程應用

文章目錄概念一、環境準備二、gitlab配置三、.gitlab-ci.yml文件配置概念 Devops是一個概念&#xff0c;就是邊開發邊測試&#xff0c;能夠大大提升開發效率&#xff0c;本文使用pycharmgitlab實現一個簡單的DevOps流程 一、環境準備 需要一個測試環境&#xff0c;模擬部署&…

華為流程管理體系構建與落地 之—— 業務流程規劃【附全文閱讀】

這部分內容聚焦華為業務流程管理&#xff0c;詳細闡述了流程規劃、設計、運營、評估與優化的具體方法和內容&#xff0c;為企業構建和完善流程管理體系提供了全面的指導。流程規劃分類方法&#xff1a;介紹 POS、OES、OMS 等分類法&#xff0c;如 POS 法按規劃、運營、支持劃分…

Android 項目:畫圖白板APP開發(零)——功能介紹(筆鋒,分頁,縮放,多指,硬件加速等)

一、前言 本系列將全面的介紹一些有關Android 畫圖方面的知識。筆觸功能包括&#xff1a;顏色、粗細、透明度、筆鋒、橡皮&#xff1b;繪圖功能包括&#xff1a;分頁、縮放、多指、撤銷恢復、筆畫加速。別看功能這么多&#xff0c;簡單的部分會花較少篇幅介紹&#xff0c;著重會…

香橙派 RK3588 部署千問大模型 Qwen2-VL-2B 推理視頻

演示視頻 香橙派RK3588部署千問大模型Qwen2-VL-2B推理視頻一、場景假設 視頻輸入為一條網絡流&#xff0c;利用大模型對視頻中的圖像幀進行推理。由于大模型推理耗時長&#xff0c;無法對每幀都進行推理&#xff0c;因此采用跳幀推理的方式&#xff1a;當推理完一幀后&#xf…

排序概念以及插入排序

一、排序基本概念1.就地排序&#xff1a;使用恒定的額外空間來產生輸出就地排序只是在原數組空間進行排序處理&#xff0c;也就是輸入的數組和得到的數組是同一個2.內部排序和外部排序&#xff1a;待排序數據可以一次性載入到內存中為內部排序&#xff0c;反之數據量過大就是外…

Webpack 核心配置與最佳實踐指南

Webpack 是現代前端工程化的核心工具,理解其配置原理和優化技巧對開發效率至關重要。 一、Webpack 基礎架構 1、核心概念關系圖 2、核心概念詳解 概念 作用 示例配置 Entry 應用入口起點 entry: ‘./src/index.js’ Output 編譯結果輸出位置 output.path: path.resolve(__d…

GISBox私有云+SaaS:安全協同的地理智能平臺

一、概述 GISBox&#xff08;GIS 工具箱&#xff09;是一套能夠對GIS 影像、地形、傾斜攝影進行場景編輯、切片轉化、分發服務的 GIS 工具箱。同時&#xff0c;GISBox還支持私有云并一鍵開啟SaaS服務。 二、什么是私有云&#xff1f; 私有云服務是一種為企業或組織量身定制的…

代理人工智能的隱藏威脅

代理型人工智能的自主性令人興奮&#xff0c;但事實并非如此。主動性越高&#xff0c;不可預測性就越強&#xff0c;這為嚴重的、往往被忽視的安全風險打開了大門。從指令劫持到數字供應鏈的連鎖故障&#xff0c;代理型人工智能不僅智能&#xff0c;而且在不受控制的情況下非常…

SonarQube 掃描多個微服務模塊

SonarQube 掃描多個微服務模塊 在使用 SonarQube/SonarCloud 掃描多個微服務模塊時&#xff0c;核心目標是??確保每個微服務模塊被獨立分析??&#xff0c;并在 SonarQube 界面中以獨立項目展示結果。以下是具體實現方案&#xff0c;分場景說明&#xff1a; ??一、前提條…

當前主流且經過市場驗證的開源 BI 系統推薦

以下是當前主流且經過市場驗證的開源 BI 系統推薦&#xff0c;結合技術特性、適用場景和行業實踐&#xff0c;為不同需求提供針對性解決方案&#xff1a;一、綜合型開源 BI 平臺1. Apache Superset&#xff08;Apache 2.0 協議&#xff09;核心優勢&#xff1a;全場景覆蓋&…

第05章 排序與分頁

1.排序數據 1.1 排序規則 1.2 單列排序 1.3 多列排序 2.分頁 2.1 背景 背景1:查詢返回的記錄太多了,查看起來很不方便,怎么樣能夠實現分頁查詢呢? 背景2:表里有 4 條數據,我們只想要顯示第 2、3 條數據怎么辦呢? 2.2 實現規則 分頁原理:所謂分頁顯示,就是將數據…

第4章 程序段的反復執行4.2while語句P128練習題(題及答案)

&#xff08;&#xff08;1&#xff09;閱讀程序#include <bits/stdc.h> using namespace std; //湯永紅 int main(){int n,s0;cin >> n;while(n){s s * 10 n % 10;n / 10;}cout << s << endl;return 0; }分別輸入&#xff1a;0 1024 1234567890輸出…

Linux下管道的實現

1.溫故知新在上一篇博客我們知道了動態庫是怎么樣進行鏈接的&#xff0c;我們知道我們的.o文件&#xff0c;可執行文件都是我們的ELF格式的文件&#xff0c;是ELF文件&#xff0c;里面就有ELF header&#xff0c;程序頭表&#xff0c;節&#xff0c;還有節頭表&#xff0c;我們…

光貓、路由器和交換機

光貓&#xff1a;全稱為光調制解調器&#xff0c;負責光信號與電信號的轉換。在光纖入戶的網絡環境中&#xff0c;運營商通過光纖傳輸光信號&#xff0c;光貓將其轉換為電腦、路由器等設備能識別的電信號&#xff0c;反之亦然。它是用戶端與運營商網絡之間的橋梁&#xff0c;保…

從零開始理解編譯原理:設計一個簡單的編程語言

編譯原理是計算機科學的核心領域之一&#xff0c;它研究如何將高級編程語言轉換為目標機器能夠執行的代碼。對于許多開發者來說&#xff0c;編譯原理可能是一個神秘而復雜的領域&#xff0c;但實際上&#xff0c;通過系統的學習和實踐&#xff0c;我們可以逐步掌握其核心概念和…

年輕新標桿!東方心繡臉韌帶年輕技術升級發布

年輕新標桿&#xff01;東方心繡臉韌帶年輕技術升級發布近日&#xff0c;“東方心繡臉韌帶年輕品項升級發布會”圓滿落幕。本次發布會聚焦現代女性面臨的衰老困擾&#xff0c;正式推出技術升級成果——“韌帶年輕”品項&#xff0c;旨在通過更科學的方案&#xff0c;助力求美者…