原创 STL源碼剖析(一)---空間配置器

聲明分析的代碼版本: GCC 2.95.3 前言 儘管在我們使用STL的時候,機會不怎麼使用空間配置器,但是空間配置器是STL中最重要的步,我們使用容器的時候,之所以不用管理內存,都是因爲有空間配置器。所以在剖析具體容器之前,先剖

原创 STL源碼剖析(二) ---vector

gcc版本: gcc 2.95.3 篇幅原因,這裏先看一部分源碼 vector template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) > class ve

原创 boost 智能指針庫

內存管理需要注意的點 內存泄漏 野指針 訪問越界 爲了避免這些問題,智能指針採用RAII機制 —資源獲取既初始化 所有初始化操作移到對象的構造函數中 所有的釋放操作都放在對象的析構函數裏 適當的異常處理代碼來應付對象構造期間

原创 內存管理(一)

當我們new了一個數組,但是我們delete 的時候卻沒加 [] ,此時會發生內存泄露??? 這個先說明, 這個不一定會發生內存泄露. #include <iostream> class A { public: A(){};

原创 網絡之旅(一)

我們以一張圖片來開始我們的網絡之旅。 當我們要訪問一個服務器時,需要知道這個服務器的IP地址。否則是沒有辦法訪問的。 但是我們日常訪問Web服務器時,也沒有輸入IP地址呀,怎麼也可以訪問? 我們以在遊覽器中輸入 https:/

原创 linux命令 - 權限管理命令-文件搜索命令

linux命令-權限管理命令 1.chmod 功能 : 改變文件或目錄權限      (1) chmod [{u g o}{+ - =}{r w x}] [文件或目錄]      (2) chmod [777] [文件或目錄] 注

原创 貪心題型總結

貪心算法(英語:greedy algorithm),又稱貪婪算法,是一種在每一步選擇中都採取在當前狀態下最好或最優(即最有利)的選擇,從而希望導致結果是最好或最優的算法

原创 makefile入門

什麼是makefile ? 在一個項目中,會有大量的 .c 文件,.h文件.讓我們手動的編譯不僅麻煩,而且效率低. makefile定義了一系列的規則來指定哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯. 然後使用

原创 vim 使用小技巧

今天看了一個 vim  教程,把它總結一下,以後方便查詢 插入 : a/A,i/I,o/O ; a/i/o 大寫 小寫 a 當前行尾插入 當前字母后插入 i 當前行首插入 當前字母前插入 o 當前行上插入 當

原创 堆 及 堆排序

堆 定義: 一種特別的樹狀數據結構. 一個堆滿足的特性: 給定堆中任意節點P和C,若P是C的母節點,那麼P的值會小於等於(或大於等於)C的值”。若母節點的值恆小於等於子節點的值,此堆稱爲最小堆(min heap) 若母節點的值恆

原创 STL vector

一個矢量類 vector 聲明 頭文件: #include vector + <參數列表> + 名字; 例 :vector< int> vec; 參數列表裏可存放的類型:             容器的數據類型: string 等

原创 繼承和動態內存分配

兩種情況 一 派生類不使用new 二 派生類使用new 派生類不使用 new 前提 : 基類使用了new,派生類不使用 new 結果 : 不需要給派生類定義顯式的析構函數,複製構造函數,賦值運算符. 原因: 析構函數: 派生

原创 linuxc 實現my_shell

問題 1.cd命令的實現(cd ,cd ~,cd -,cd path) 由於cd命令是shell 內建的命令,是不能調用系統的命令實現cd,所以就得手寫 所用函數: char * getcwd(char * buf, size_

原创 網絡之旅(三)

上一節是站在服務器和客戶端的角度講收發包的.這次我們站在包的角度上再看一下 一個包的一生 一個包被創建的過程 有這個表就可以看出 一個完整的包其實就是在數據包前加了三個包頭. 概述一個包的一生 當一個包在 IP 協議處進行最後的

原创 素數篩法 - 歐拉篩法

素數篩法 - 歐拉篩法 素數的篩法有幾種,這次主要談一下歐拉篩法 1.暴力求素數        時間複雜度 : O(n2) 稍微優化一下 :縮小數據範圍從 n 優化到√n        時間複雜度 : 自然也就從 O(n2