原创 C++序列式容器vector,deque,list

vector,deque,list定義於namespace std中,這三者是STL的序列式容器,也就是元素的位置和你置入元素的方式順序有關係,三者在存儲方式上有很大不同,處於程序運行效率,不同的存儲方式,也就提醒我們在不同的應用

原创 c++算法 和最大的子數組 maxsubarray

已知有n和元素的數組,下標爲0-n-1,求和最大的子數組,總體來說有三種方法: 暴力求解法: 算法思想:假設下標j到i-1的子數組爲和最大的子數組,則有 0<=j < i, 1 <= i < n,因此,算法代碼可以實現如下: #

原创 C++ 算法 查找旋轉數組中的最小值 允許重複元素

假定一個有序數組中的元素以某個支點做了旋轉,如數組01234567變成了34567012,查找該旋轉後數組中的最小值。 算法思路: 旋轉後數組被分爲了兩部分,較大的一部分和較小的一部分並且較小的一部分在後面,如果我們取中間(非兩

原创 Vim 自動補全--YouCompleteMe

Vim 自動補全--YouCompleteMe 一、安裝vim的插件管理器Vundle 1.如果自己用戶目錄下不存在.vim/bundle,可以使用如下命令進行創建 mkdir -p ~/.vim/bundle 2.把Vbund

原创 C++關聯式容器set,multiset

set和multiset都是C++標準庫中的一種關聯式容器,它們都會依照一定的規則對存放到其中的元素進行排序,它們倆個主要區別在於:multiset裏面的元素可以重複,而set也就類似於數學中的集合,不出現重複元素。 它們在C+

原创 C++對象指針比較比較的並不是地址值

在C++中,在有繼承的情況下,一個對象可以有多個有效地址,因同一個子類對象,被不同的父類指針指向時,各個父類指針的值是不同的。分析一段如下代碼: #include <iostream> #include <assert.h> u

原创 C++類型轉換----const_cast

const_cast是一種捨棄常量特性的類型轉換,被轉換的對象在脫常後必須能夠作爲左值,\ 否則無法使用這種類型轉換,在使用這個類型轉換時我們必須在確保脫常後變量不會被修改。 下面我們透過具體的例子來說明具體怎樣使用: #inc

原创 C++引用形參+模板---解決數組指針退化爲指針

C/C++中如果一個函數接受一個數組作爲參數,那麼數組將會被退化爲指針,如果定義如下代碼: //數組arr的大小未知。 int arrsize(int arr*) { cout << "element num : " << s

原创 C++ nocopyable

有時候我們要求某些類不能被拷貝,我們可以通過實現,一個不可拷貝的父類,子類對象繼承父類對象,來達到子類對象不可拷貝的目的。 實現一個不可拷貝對象就是把拷貝構造函數和賦值運算符聲明爲私有的,同時實現構造函數(必須有,由於提供了拷貝

原创 C++算法 字符串全排列 非遞歸/非遞歸

字符串的全排列是面試中相對而言必要重要的算法,有兩種實現方法:遞歸,非遞歸 補充: 替換點:從字符串的最後一位開始,找到第一個逆序的字符串,如“54312”那麼從後向前第一個逆序爲12,那個1就是替換值,替換值得位置就是替換點。

原创 C++ 網絡編程 數據結構 面試題羅列

在這裏有我自己的面試問題,還有網上收集的。 1. connect方法會阻塞,請問有什麼方法可以避免其長時間阻塞? 2. 網絡中,如果客戶端突然掉線或者重啓,服務器端怎麼樣才能立刻知道? 3. 在子網210.27.48.

原创 C++運算符重載++,--

C++自增自減運算共有四種:前綴自增,前綴自減,後綴自增,後綴自減。 C++在重載這四種運算符的過程中通過在後綴時傳入一個無用的int參數,前綴時無參數來區分。 前綴的自增自減運算返回操作之後的值,所以應該返回引用,而後綴的自

原创 C++類型轉換----static_cast

static_cast無法像const_cast一樣對將常量轉換爲non-const類型,無法將某種類型的指針轉換爲其他不相關的其他\ 類型的指針,也無法將指針轉換爲int(畢竟在64位系統下指針爲64位而int爲32位)等等,

原创 C++類型轉換----dynamic_cast(以及結合typeid的應用)

dynamic_cast用於具有繼承體系的轉換中,用於轉換指針和引用,通常類必須要有一個虛函數,因爲\ 運行時類的運行信息存儲在虛表中,如果沒有虛表使用dynamic_cast將會導致編譯錯誤。\ dynamic_cast在運

原创 C++模板----限制模板只能某些已知類型進行實例化

可能有時候我們需要限定我們所編寫的模板的應用範圍,我們可以通過下面的方式實現.\ 在實現之前我們應該簡單的說明一下,C++編譯器對模板的處理過程: 編譯器遇到模板定義時會進行語法檢查,但不進行編譯,當編譯器遇到遇到一個實例化\