@c++11

動態 列表
@hedzr

C++ 的枚舉類型

Prologue: C++ 中的枚舉類型應用以及轉換到字符串的增強:AWESOME_MAKE_ENUM,... Original From: HERE 因為臨時發現需要一個枚舉量到字符串的轉換器,所以乾脆梳理了一遍古往今來的枚舉類型的變化。 於是奇怪的冷知識又增加了。 枚舉類型 enum 在 cxx11 之前,C/C++ 通過 enum 關鍵字聲明枚舉量。 // 匿名全局枚舉

hedzr 頭像

@hedzr

昵稱 hedzr

@hedzr

談 C++17 裏的 FlyWeight 模式

回顧享元模式,考慮實作它的各種問題。 Prologue 略過 FlyWeight Pattern 理論 享元模式,是將複雜對象的相同的組成元素抽出並單獨維護的一種結構型設計模式。這些相同的組成元素被稱為共享元件,它們在一個單獨的容器中被唯一性地管理,而複雜對象只需持有到該唯一實例的參考,而無需重複創建這樣的相同的元素,從而能夠大幅度地削減內存佔用。 以字處理器為例,每個字符都具有獨立的、區別於其它

hedzr 頭像

@hedzr

昵稱 hedzr

@hedzr

談 C++17 裏的 Visitor 模式

Visitor Pattern 訪問者模式是一種行為模式,允許任意的分離的訪問者能夠在管理者控制下訪問所管理的元素。訪問者不能改變對象的定義(但這並不是強制性的,你可以約定為允許改變)。對管理者而言,它不關心究竟有多少訪問者,它只關心一個確定的元素訪問順序(例如對於二叉樹來説,你可以提供中序、前序等多種訪問順序)。 組成 Visitor 模式包含兩個主要的對象:Visitable 對象和 Vis

hedzr 頭像

@hedzr

昵稱 hedzr

@hedzr

談 C++17 裏的 Observer 模式 - 4 - 信號槽模式

上上上回的 談 C++17 裏的 Observer 模式 介紹了該模式的基本構造。後來在 談 C++17 裏的 Observer 模式 - 補/2 裏面提供了改進版本,主要聚焦於針對多線程環境的暴力使用的場景。再後來又有一篇 談 C++17 裏的 Observer 模式 - 再補/3,談的是直接綁定 lambda 作為觀察者的方案。 Observer Pattern - Part IV 所以嘛,我

hedzr 頭像

@hedzr

昵稱 hedzr

@gocpplua

簡述C++11中auto和decltype

本文是對auto和decltype的簡述,更加詳細的內容看文章後參考部分。 一. auto和decltype作用 C++11標準引入了auto和decltype類型説明符,它能讓編譯器幫我們去分析表達式所屬的類型。 auto 的推導能力較弱,而且還有限制。 例如: auto 不能推導數組類型: int arr[5] = {1}; // auto 不能用於推到數組類型。 因為{arr}純粹是

gocpplua 頭像

@gocpplua

昵稱 gocpplua

@codingembedded

C++11 ECDSA-withSHA256驗籤

這裏不做簽名,只驗籤 使用方法: openssl版本:1.0.2g 其他的自行驗證 編譯:g++ test.cpp -o test -lssl -lcrypto -std=c++11 執行:./test 簽名過程:隨機數進行SHA256哈希後再使用私鑰對其簽名 驗簽過程:用隨機數的SHA256和公鑰來驗證簽名 以下代碼是驗證簽名 #include iostrea

codingembedded 頭像

@codingembedded

昵稱 加班猿

@qlewa5tt

C++11單例模式(線程安全)

單例模式 注意:單例模式會讓程序變得難以測試,所以儘可能不要使用單實例模式。 保證一個類只有一個實例,並且提供了訪問該實例的全局訪問點。 線程安全的單例模式-C++11 Singleton.h #pragma once templatetypename T class Singleton { public: static T instance() { static T instanc

qlewa5tt 頭像

@qlewa5tt

昵稱 TechArtLife

@hlinleanring

【C/C++實用工具】內存相關問題排查工具---cppcheck與valgrind

C++中令人疑惑的內存問題 C++的內存問題時常令人十分困惑。總結起來C++的內存問題可以分為以下幾類 內存泄露 當程序員使用new(或malloc)關鍵字分配內存而忘記使用 delete (或free)函數或 delete[] 運算符釋放內存時,C++ 中就會發生內存泄漏。在 C++ 中使用錯誤的刪除運算符會發生內存泄漏最多的情況之一。delete 運算符應用於釋放單個分配的內存空

hlinleanring 頭像

@hlinleanring

昵稱 侯磊

@fanqiemao

[C++]C風格、C++風格和C++11特性的線程池

線程池概念 假設完成一項任務需要的時間=創建線程時間T1+線程執行任務時間T2+銷燬線程時間T3,如果T1+T3的時間遠大於T2,通常就可以考慮採取線程池來提高服務器的性能 thread pool就是線程的一種使用模式,一個線程池中維護着多個線程等待接收管理者分配的可併發執行的任務。 避免了處理短時間任務時創建與銷燬線程的代價 既保證內核的充分利用,又能防止過度調度 可用線程數量應該取決於

fanqiemao 頭像

@fanqiemao

昵稱 番茄貓

@hlinleanring

C++的移動構造函數和移動賦值運算符

什麼是移動構造 在 C++ 11 標準之前(C++ 98/03 標準中),如果想用其它對象初始化一個同類的新對象,只能藉助類中的複製(拷貝)構造函數。在C++11中,引入了右值引用,提供了左值轉右值的方法,避免了對象潛在的拷貝。而移動構造函數和移動賦值運算符也是通過右值的屬性來實現的。直觀的來講,移動構造就是將對象的狀態或者所有權從一個對象轉移到另一個對象。只是轉移,沒有內存的搬遷或者內存拷貝所以

hlinleanring 頭像

@hlinleanring

昵稱 侯磊

@manxisuo

寫一個只觸發一次槽函數的Qt connect函數

在之前的Qt項目中,我發現經常會用到槽函數只需要執行一次的情況。也就是説,槽函數執行一次後,就需要disconnect對應的連接。然而,真正操作起來實際上挺麻煩的,或者説不優雅。因為你需要把之前connect時產生的QMetaObject::Connection對象保存起來,而保存它不能用局部變量,通常需要保存到類的成員變量中,或者其他生命週期足夠長的地方,以防止在disconnect它的時候,它

manxisuo 頭像

@manxisuo

昵稱 manxisuo

@simple_coder

C++11 unique_lock lock_guard

unique_lock獨佔的是mutex對象,就是對mutex鎖的獨佔。用法如下: (1)新建一個unique_lock 對象 (2)給對象傳入一個std::mutex 對象作為參數; std::mutex mymutex; unique_lock lock(mymutex); 加鎖時新建一個對象lock,而這個對象生命週期結束後自動解鎖。在函數內部創建一個鎖,函數結束即自動釋放

simple_coder 頭像

@simple_coder

昵稱 Simple

@caisekongbai

提升面試成功率:深入理解 C++ 11 新特性

C++11是C++語言的一個重大更新,引入了許多新特性,包括自動類型推導、lambda表達式、右值引用、智能指針等等。這些新特性使得C++更加現代化、高效、易用。也是面試容很容易被問到一個問題,下面我將簡要介紹一些C++11的新特性 自動類型推導 C++11引入了auto關鍵字,可以讓編譯器自動推導變量的類型。這樣可以減少代碼中的重複代碼,提高代碼的可讀性和可維護性。例如: auto i = 42

caisekongbai 頭像

@caisekongbai

昵稱 小萬哥

@wunima

學懂現代C++——《Effective Modern C++》之類型推導和auto

前言 之前分享過Scott Meyers的兩本書《Effective C++》和《More Effective C++》。這兩本書對我深入學習C++有着很大的幫助,建議所有想進階C++技術的同學都可以看看。但是,這兩本書是大神Scott在C++11之前出的,而C++11對於C++社區來説是一次重大的變革,被稱為現代C++,用以區分C++11之前的傳統C++。 好在Scott在之後也帶來了全新的《E

wunima 頭像

@wunima

昵稱 吳尼瑪

@masutaadashi

C語言內存泄漏的常見情況及解決方案

內存泄漏(Memory Leak)是指程序在申請內存後,無法釋放已申請的內存空間,一次小的內存泄漏可能沒什麼影響,但長期或頻繁發生會佔用大量內存,影響系統性能甚至引發系統崩潰,造成系統資源的浪費。 內存泄漏存在於諸多編程語言中,是一種普遍的常見的問題。 以C和C++為代表的允許程序員直接管理內存的語言。內存泄漏的常見原因是程序員顯式地分配了內存,但忘記釋放不再需要的內存。 以Java、Pyt

masutaadashi 頭像

@masutaadashi

昵稱 Masutaa大師

@yuelianggeimengnalisha

智能指針

1、RAII 利用對象生命週期來控制程序資源。在對象構造時獲取資源,在對象析構時釋放資源。 2、智能指針的原理 RAII特性、像指針一樣去使用。 Toperator*() { return *_ptr; } T*operator-() { return _ptr; } 3、問題 多個智能指針指向同一塊空間,這塊空間會被析構多次。也就是智能指針拷貝有問題。 4、unique_ptr

yuelianggeimengnalisha 頭像

@yuelianggeimengnalisha

昵稱 月亮給蒙娜麗莎

@zhoutk

簡單、穩定、概念前衞且易看懂的JSON庫——QJSON

QJSON 介紹 QJSON 是 ZJSON的替代庫。 ZJSON已經開發出來有一段時間了,也進行了一些應用,效果還不錯,但現在存在些問題。 字符串解析為json對象時,當初借鑑於json11,一直沒時間去換成狀態機模式 沒有進行大規模數據驗證 大量使用遞歸算法,沒時間組織測試 C++要求至少為 C++17 版本 因此花了一個國慶假期,封裝QT5:Core中的相關Json庫,保持

zhoutk 頭像

@zhoutk

昵稱 zhoutk

@liu_chen

c++的時間管理:chrono庫

貼一個解釋得相對詳細的帖子 https://renyili.org/post/std_chrono/ chrono裏面用到了比較多的庫裏自定義的概念,我寫一下學習筆記如下。 庫裏定義了三種時間相關的模板類 1. time_point 第一種表示使用某個計時時鐘類型來記錄的時間點 templateclass Clock, class Duration = typename Clock::durati

liu_chen 頭像

@liu_chen

昵稱 路名一

@dhero

lambda表達式

C++ 中的 Lambda 表達式是一種簡潔的語法結構,允許在代碼中直接定義和使用匿名函數。Lambda 表達式增強了代碼的靈活性和可讀性,特別是在處理算法、函數對象、事件處理、回調函數等場景下尤為有用。其一般格式如下: [capture_list](parameter_list) - return_type { function_body } 各部分詳細説明: 捕獲列表(Capture

dhero 頭像

@dhero

昵稱 dherorunner

@ishare

深入解析C++的auto自動類型推導

關鍵字auto在C++98中的語義是定義一個自動生命週期的變量,但因為定義的變量默認就是自動變量,因此這個關鍵字幾乎沒有人使用。於是C++標準委員會在C++11標準中改變了auto關鍵字的語義,使它變成一個類型佔位符,允許在定義變量時不必明確寫出確切的類型,讓編譯器在編譯期間根據初始值自動推導出它的類型。這篇文章我們來解析auto自動類型推導的推導規則,以及使用auto有哪些優點,還有羅列出自C+

ishare 頭像

@ishare

昵稱 愛分享

@wodekouwei

Android C++系列:Linux信號(二)

PCB的信號集 如果在進程解除對某信號的阻塞之前這種信號產生過多次,將如何處理?POSIX.1允 許系統遞送該信號一次或多次。Linux是這樣實現的:常規信號在遞達之前產生多次只 計一次,而實時信號在遞達之前產生多次可以依次放在一個隊列裏。本文不討論實時信 號。每個信號只有一個bit的未決標誌,非0即1,不記錄該信號產生了多少 次,阻塞標誌也是這樣表示的。因此,未決和阻塞標誌可以用相同的數據類型s

wodekouwei 頭像

@wodekouwei

昵稱 輕口味