原创 Linux C/C++教程(八)-- 泛型編程

目錄   一、函數模板 二、類模板 三、模板特化 一、函數模板 二、類模板 三、模板特化

原创 Linux C語言教程(一) 數據類型

一、基礎類型 1.1 常量 1.2 變量 1.2.1 變量類型 浮點型 字符型 C語言是靜態弱類型語言,類型在編譯時需要確定,對於string類型,由於它的大小無法在編譯時確定,所以C語言中沒有string類型,通過char *和char

原创 Linux C/C++教程(一)-- 面向過程和麪向對象

目錄   一、面向過程 二、面向對象 一、面向過程 面向過程是一種以過程爲中心的編程思想。分析問題的解決步驟,通過函數一步步實現,然後順序調用函數來執行。主要缺點在於複用性、維護性、拓展性比較差。 二、面向對象 面向對象採用對象(實體)的

原创 Linux C/C++教程(二)-- C++對C的拓展

  目錄   一、bool類型關鍵字 二、引用 三、輸入輸出 四、函數參數 五、string類 六、左值 一、bool類型關鍵字 C++在C語言的基礎類型上新增了布爾類型(bool),bool可取的值有兩個:true、false,佔用一個

原创 Linux C/C++教程(三)-- 異常和IO流

目錄   一、異常 二、IO流 三、文件操作 一、異常 C語言中使用goto語句、setjmp或longjmp函數來進行異常處理,詳情見詳解C的異常處理機制,而C++中使用try-catch機制來自動捕獲異常。 二、IO流 三、文件操作

原创 c++ coredump實例解析

背景     經過重重調試後,看到編譯成功的那一刻,內心充滿歡喜。當程序一運行,卻經常出現coredump的情況,此時內心是崩潰的。我想程序員經常會碰到這種情況,尤其使用c++語言編寫代碼,由於沒有自動內存管理,經常會出現coredump

原创 使用Trie字典樹來實現搜索框檢索詞聯想功能

我們在使用百度或其它搜索框的時候經常會看到如下情況: 下拉框中會顯示檢索詞的聯想,這個功能是怎麼實現的呢?其實這就是Trie樹(或者字典樹)的一個實際應用。 這裏不具體介紹Trie樹,接下來簡單實現一下這種聯想功能。 #include

原创 gdb調試多線程出現的死鎖

   多線程的條件下,程序很容易出現死鎖,此時各個線程處於等待狀態,可以通過gdb調試找到死鎖出現的地方。 例子: #include <stdio.h> #include <pthread.h> #include <unistd.h>

原创 c語言如何實現函數重載

Question: c語言如何實現函數重載 Background:c語言中不允許有同名函數,因爲編譯時函數命名是一樣的,不像c++會添加參數類型和返回類型作爲函數編譯後的名稱,進而實現重載。 Method: 1. 使用函數指針來實現

原创 線程安全單例模式

#include <boost/noncopyable.hpp> #include <pthread.h> #include <stdlib.h> // atexit #include<iostream> using namespace

原创 尋找二叉樹兩個節點的最低公共祖先

給定一棵樹,同時給出樹中的兩個結點(n1和n2),求它們的最低公共祖先。也就是常見的LCA(Lowest Common Ancestor )問題 方法一 下面是一個簡單的複雜度爲 O(n) 的算法,解決LCA問題 1) 找到從根

原创 1. Two Sum

Example: Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. 實現: class So

原创 C語言實現繼承和多態

#include <stdlib.h> #include <string.h> #include <stdio.h> //------------- Person -------------- typedef struct Pers

原创 使用autoconfig/automake生成makefile文件以及將程序打包爲tar.gz

首先簡略的說一下用automake生成Makefile的步驟: (1)創建源代碼文件,使用"autoscan"生成configure.scan文件,將其重命名爲configure.ac,並做適當修改, 然後使用”aclocal”命令生成a

原创 2. Add Two Numbers

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order