原创 線程(一)

線程什麼是線程線程與進程線程的優缺點線程id與進程id關於使用posix線程庫的說明線程的創建線程的退出線程的等待與分離 什麼是線程 線程是進程中的一條執行流,也是計算機調度的基本單位。在linux平臺下,線程是由進程模擬實現的,故該

原创 C++智能指針

智能指針什麼是智能指針?爲什麼要有智能指針?auto_ptrunique_ptrshared_ptrshared_ptr引發的線程安全問題:shared_ptr所導致的循環引用的問題最後總結一下我們學過的這幾種智能指針 什麼是智能指針

原创 牛客--棧的壓入彈出序列

輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能 爲該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧 的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,

原创 leetcode--最小棧

設計一個支持 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。 push(x) – 將元素 x 推入棧中。 pop() – 刪除棧頂的元素。 top() – 獲取棧頂元素。 getMin() – 檢索棧中的最小元素

原创 STL源碼剖析---關聯式容器map詳解

STL源碼剖析---關聯式容器map什麼是mapmap中存儲的鍵值對map的迭代器map的常用操作代碼演練 什麼是map map是STL中關聯式容器的一種,所謂關聯式容器,元素是按關鍵字來保存和訪 問的,而序列式容器中的元素則是按它們

原创 關聯式容器set詳解

STL源碼剖析---關聯式容器set詳解什麼是setset的迭代器set的常用操作代碼測試 什麼是set 上篇博客詳細介紹了關聯式容器map ,今天我們來了解一下它的姊妹篇–set. set也屬於關聯式容器.他們倆底層都由紅黑樹實現,

原创 leetcode--二叉樹的最近公共祖先

給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 例如,給定如下二叉樹: root = [3,5,1,6,2,0,8,null,null,7,4]. 示例 1: 輸入: root = [3,5,1,6,2,0,8,null

原创 vector迭代器失效的問題

當你使用vector容器時,如果你進行下面2種中的任意一種操作: vector已滿再進行插入操作 使用erase()刪除數據. 就會導致迭代器失效. 爲什麼呢? 我們舉個列子 #include<iostream> #include

原创 C++模板爲什麼不支持分離編譯?

C++模板爲什麼不支持分離編譯?首先,一個編譯單元(translation unit)是指一個.cpp文件以及它所#include的所有.h文件,.h文件裏的代碼將會被擴展到包含它的.cpp文件裏,然後編譯器編譯該.cpp文件爲一

原创 淺析AVL樹

文章目錄1.什麼是AVL樹2.AVL樹結點的定義3.AVL樹的平衡因子4.AVL樹的插入4.1將數據插入到樹中4.2更新父結點平衡因子的值,並驗證是否正確,不正確則選擇適當的旋轉方式4.3選擇旋轉方式並更新平衡因子的值。4.3.1左單

原创 linux--信號量

信號量 什麼是信號量? 信號量是進程間通信方式之一,用於實現進程間的同步與互斥。 同步與互斥 同步:保證對臨界資源訪問的時序可控性,兩個或兩個以上的進程或線程在運行過程中協同步調,按預定的先後次序運行. 比如只有超市進貨之後我才能去消

原创 linux--消息隊列

消息隊列 Sysetm V 什麼是消息隊列消息隊列的應用函數利用消息隊列實現進程間通信msgqueue_c.cmsgqueue_s.c消息隊列的不足 什麼是消息隊列 消息隊列實際上是操作系統在內核爲我們創建的一個隊列. 關於組織一個帶

原创 linux--管道

管道什麼是管道匿名管道代碼實現管道讀寫規則匿名管道的特點命名管道代碼實現:命名管道的打開規則(重要)命名管道的讀寫特性(重要)匿名管道與命名管道的區別(非常重要) 什麼是管道 管道本質上是內核中的一段緩衝區,它可以連接兩個進程,進行數

原创 linux--共享內存

共享內存什麼是共享內存?共享內存圖解爲什麼說共享內存是最快的IPC?(重點)共享內存代碼實現相關函數示例: 什麼是共享內存? 共享內存是進程間通信的一種方式, 共享內存圖解 爲什麼說共享內存是最快的IPC?(重點) 因爲共享內存是直

原创 leetcode---字符串相加

給定兩個字符串形式的非負整數 num1 和num2 ,計算它們的和。 注意: num1 和num2 的長度都小於 5100. num1 和num2 都只包含數字 0-9. num1 和num2 都不包含任何前導零。 你不能使用任何內建