C++日更八股--day2

### C++ sort 的底層原理
這里其實原來問的是你如何優化快速排序,但是我最初只以為是隨機選擇基準,但是很顯然面試官對此并不滿意
閑暇之際,看到一篇介紹sort的原理的文章,才知道原來如是也
1.快速排序:作為主要算法,它通過選擇一個pivot元素,將序列劃分為兩個子序列,一個子序列元素小于樞軸,另一個大于,隨后遞歸排序,時間復雜度達到O(nlogn).
2.堆排序:為了避免快速排序在最壞情況下O(n^2)的最壞情況,當快速排序遞歸深度超過一定限制的時候,sort迅速切換到堆排序
3.插入排序:當處理小規模的子序列的時候,使用插入排序的性能更好


### 請介紹一下epoll,poll,select
select、poll 和 epoll 是三種Linux下實現 ??I/O 多路復用
I/O多路復用指的是用一個線程監控多個文件描述符的動態變化
select(相當于逐個點名):每次調用,都需要告知內核需要監控哪些文件描述符,內核進行標記,然后返回就緒的數量,用戶自己還需要再遍歷一次
poll(改進版逐一點名):相對于select使用vector來存儲監控的文件描述符,使得容量無限制
epoll(事件通知):當有文件描述符需要服務的時候,才會通知,且返回的為需要服務的文件描述符,避免遍歷
這里肯定就會有朋友問了,有了epoll還要poll干嘛:為了非Linux下使用

這里補充一下loop,綁定器和回調函數
loop:事件循環:??事件循環??是一個持續運行的循環結構,負責監聽和分發事件。它通過 ??非阻塞?? 的方式處理多個任務,避免因等待某個操作(如文件讀取)而阻塞整個程序。
? 一般流程為循環開始 → 檢查是否有事件 → 處理事件 → 等待新事件 → 循環繼續
? note:上述三種select等是用于監聽,后面這些是處理這些事件的流程
綁定器:綁定器??用于將一個函數與特定的參數或上下文綁定,生成一個新的函數。通過占位符給函數一個固定的參數
回調函數:允許程序在等待耗時操作時不阻塞主線程。當某一事件發生時進行調用,

### 迭代器失效的場景
vector,這個容器為動態數組,相信學過操作系統分區分配的朋友一定知道,我如果在連續的存儲空間中擴容的做法為再找一片空間,當前內容復制過去,再插入
那么由于迭代器(類似于指針),你地址都變了,我肯定失效了
deque(雙端隊列):底層為分段連續的數組,插入會導致全部迭代器失效,規則復雜,這里不做贅述,自行了解
map/set/multimap/multiset:底層是紅黑樹,后面我會在數據結構章節介紹這種結構,插入刪除不會失效
unordered_map/unordered_set(哈希表):插入如果導致擴容,迭代器失效
note:刪除操作肯定會導致當前迭代器失效,這很容易理解

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

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

相關文章

UniApp 的現狀與 WASM 支持的迫切性

UniApp 的現狀與 WASM 支持的迫切性 點擊進入免費1 UniApp 的現狀與 WASM 支持的迫切性 點擊進入免費版2 一、UniApp 的跨平臺優勢與性能瓶頸 UniApp 憑借“一次開發,多端發布”的核心理念,已成為跨平臺開發的主流框架之一。然而,隨著移動應用場景的復雜化(如 3D 渲染、音…

如何正確使用日程表

日程安排,是時間管理中非常重要的一項,也是不容易管好的一項。 日程安排,通常指放到日程表里的事情,一般來說,放到日程表的事情要符合以下幾個特點: 01.明確具體時間段,比如是下午2點到下午三…

【Token系列】14|Prompt不是文本,是token結構工程

文章目錄 14|Prompt不是文本,是token結構工程一、很多人寫的是“自然語言”,模型讀的是“token序列”二、Prompt寫法會直接影響token結構密度三、token分布影響Attention矩陣的聚焦方式四、token數 ≠ 有效信息量五、Prompt結構設計建議&…

研發效率破局之道閱讀總結(4)個人效率

研發效率破局之道閱讀總結(4)個人效率 Author: Once Day Date: 2025年4月30日 一位熱衷于Linux學習和開發的菜鳥,試圖譜寫一場冒險之旅,也許終點只是一場白日夢… 漫漫長路,有人對你微笑過嘛… 全系列文章可參考專欄: 程序的藝術_Once-Day…

CNN代碼詳細注釋

import torch from torch import nn#定義張量x,它的尺寸是5x1x28x28 #表示了5個單通道28x28大小的數據 xtorch.zeros([5,1,28,28])#定義一個輸入通道是1,輸出通道是6,卷積核大小是5x5的卷積層 convnn.Conv2d(in_channels1,out_channels6,ker…

機器指標監控技術方案

文章目錄 機器指標監控技術方案架構圖組件簡介Prometheus 簡介核心特性適用場景 Grafana 簡介核心特性適用場景 Alertmanager 簡介核心特性適用場景 數據采集機器Node ExporterMySQL ExporterRedis ExporterES ExporterRocketMQ ExporterSpringcloud ExporterNacos 數據存儲短期…

【Office-Excel】單元格輸入數據后自動填充單位

1.自定義設置單元格格式 例如我想輸入數字10,回車確認后自動顯示10kg。 右擊單元格或者快捷鍵(Ctrl1),選擇設置單元格格式,自定義格式輸入: 0"kg"格式仍是數字,但是顯示是10kg&…

JavaScript的3D庫有哪些?

JavaScript的3D庫有哪些? 在3D開發領域,JavaScript提供了多種庫和框架,使開發者能夠在瀏覽器中創建豐富的3D體驗。以下是一些流行的3D方面的JavaScript庫: Three.js:這是最著名的用于創建3D圖形的JavaScript庫之一。它…

中央網信辦部署開展“清朗·整治AI技術濫用”專項行動

為規范AI服務和應用,促進行業健康有序發展,保障公民合法權益,近日,中央網信辦印發通知,在全國范圍內部署開展為期3個月的“清朗整治AI技術濫用”專項行動。 中央網信辦有關負責人表示,本次專項行動分兩個階…

論文閱讀:2024 arxiv Jailbreaking Black Box Large Language Models in Twenty Queries

總目錄 大模型安全相關研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Jailbreaking Black Box Large Language Models in Twenty Queries https://www.doubao.com/chat/4008882391220226 https://arxiv.org/pdf/2310.08419 速覽 這篇論文是來…

零基礎學指針2

零基礎學指針---大端和小端 零基礎學指針---什么是指針 零基礎學指針---取值運算符*和地址運算符& 零基礎學指針---結構體大小 零基礎學指針5---數據類型轉換 零基礎學指針6---指針數組和數組指針 零基礎學指針7---指針函數和函數指針 零基礎學指針8---函數指針數組…

《Python實戰進階》 No46:CPython的GIL與多線程優化

Python實戰進階 No46:CPython的GIL與多線程優化 摘要 全局解釋器鎖(GIL)是CPython的核心機制,它保證了線程安全卻限制了多核性能。本節通過concurrent.futures、C擴展優化和多進程架構,實戰演示如何突破GIL限制&#…

Golang實現函數默認參數

golang原生不支持默認參數 在日常開發中,我們有時候需要使用默認設置,但有時候需要提供自定義設置 結構體/類,在Java我們可以使用無參、有參構造函數來實現,在PHP中我們也可以實現(如 public function xxx($isCName false, $sec…

Chrome 136 H265 WebRTC 支持 正式版本已包含

時間過的真快,去年8月份寫過一篇文章介紹如何加參數方式啟動Chrome H265 硬件解碼器, 現在的136版本已經包含在內,至此WebRTC已經完整包含了H264和H265解碼器,這個事情應該從2015年開始,Google強推VP9 AV1&#xff0c…

12.SpringDoc OpenAPI 功能介紹(用于生成API接口文檔)

12.SpringDoc OpenAPI 功能介紹(用于生成API接口文檔) SpringDoc OpenAPI 是一個基于 OpenAPI 3.0/3.1 規范的工具,用于為 Spring Boot 應用生成 API 文檔。它是 springfox(Swagger 2.x)的現代替代方案,完全支持 Spring Boot 3.x…

CentOS Linux 環境二進制方式安裝 MySQL 5.7.32

文章目錄 安裝依賴包新建用戶解壓初始化配置文件啟動服務登錄MySQL修改密碼停止數據庫 安裝依賴包 yum -y install libaio perl perl-devel libncurses* autoconf numactl新建用戶 useradd mysql解壓 tar xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.32-l…

Webug4.0通關筆記06- 第8關CSV注入

目錄 CSV注入漏洞 1.CSV漏洞簡介 2.漏洞原理 (1)公式執行 (2)DDE機制 (3)OS命令執行 3.漏洞防御 第08關 CSV注入 1.打開靶場 2.修改源碼 3.注入命令 4.導出excel表 5.打開excel表 CSV注入漏洞…

Windows和 macOS 上安裝 `nvm` 和 Node.js 16.16.0 的詳細教程。

Windows和 macOS 上安裝 nvm 和 Node.js 16.16.0 的詳細教程。 --- ### 1. 安裝 nvm(Node Version Manager) nvm 是一個 Node.js 版本管理工具,可以輕松安裝和切換不同版本的 Node.js。 #### Windows 安裝 nvm 1. **下載 nvm 安裝包**&#x…

[特殊字符] 藍橋杯省賽全解析:含金量、獲獎難度、參賽意義與發展價值全面剖析

藍橋杯省賽剛剛落幕,不論你是剛參加完比賽的同學,還是還在觀望是否值得投入時間去準備藍橋杯的學生,相信你都關心: 藍橋杯到底值不值得參加? 獲獎難不難?含金量如何? 和其它算法競賽相比有什么…

ASP.NET MVC后端控制器用模型 接收前端ajax數據為空

1、前端js代碼 如下: const formData {DeptName: D001,Phone: 12345678900 };$.ajax({url: "/Phone/SavePhone1",type: "POST",contentType: "application/json",data: JSON.stringify(formData), //必須要JSON.stringifysuccess:…