補充知識:
namespace的格式基本格式是
namespace exp
有點類似於類,但完全是兩種不同的型別。
為了在namespace外使用namespace內的變數我們使用::操作符,如下
exp::a
exp::b
使用namespace可以有效的避免重定義的問題
#include
using namespace std;
namespace first
namespace second
int main ()
結果是5
3.1416
兩個全域性變數都是名字都是var,但是他們不在同乙個namespace中所以沒有衝突。
關鍵字using可以幫助從namespace中引入名字到當前的宣告區域
#include
using namespace std;
namespace first
namespace second
int main ()
輸出是5
2.7183
103.1416
就如我們所指定的第乙個x是first::x,y是second.y
using也可以匯入整個的namespace
#include
using namespace std;
namespace first
namespace second
int main ()
輸出是5
103.1416
2.7183
正如我們所預見的匯入的整個的first的namespace,前一對x,y的值就是first中的x,y的值。
這裡我們不能在「using namespace first;「下加一句「using namespace second;「,為什麼呢?
這樣做無異於直接完全的忽視namespace first和namespace second,會出現重複定義的結果,所以前面的hello_world.c中的using指令的使用一定程度上存在問題的,只是因為我們就用了乙個namspace,一旦引入了新的namespace這種做法很可能會出現重複定義的問題
2.模板
下面定義了乙個名叫compare的函式模板,支援多種型別的通用比較邏輯。
template
int compare(const t& left, const t& right)
if (right < left)
return0;}
compare(1, 2); //使用模板函式
考慮我們寫乙個簡單的棧的類,這個棧可以支援int型別,long型別,string型別等等,不利用類模板,我們就要寫三個以上的stack類,其中**基本一樣,通過類模板,我們可以定義乙個簡單的棧模板,再根據需要例項化為int棧,long棧,string棧。
//statck.h
template class stack ;
寫法2:
template 203.listclass
hashtable
2127
bool contains(const hashedobj &obj);
28bool insert(const hashedobj &obj);
29bool remove(const hashedobj &obj);
30private:31
32 std::vector> thelist; //
雜湊表33
int myhash(const hashedobj & obj) const; //
雜湊函式
34};
reserve
是容器預留空間,但並不真正建立元素物件,在建立物件之前,不能引用容器內的元素,因此當加入新的元素時,需要用
push_back()/insert()
函式。resize
是改變容器的大小,並且建立物件,因此,呼叫這個函式之後,就可以引用容器內的物件了,因此當加入新的元素時,用
operator
操作符,或者用迭代器來引用元素物件。
再者,兩個函式的形式是有區別的,
reserve
函式之後乙個引數,即需要預留的容器的空間;
resize
函式可以有兩個引數,
第乙個引數是容器新的大小,第二個引數是要加入容器中的新元素,如果這個引數被省略,那麼就呼叫元素物件的預設建構函式。
4.
std::string& strout的意思是宣告乙個string型別的引用,該引用變數名為stroutstd是乙個命名空間,命名空間是防止名字衝突的乙個策略。
雜湊表基礎知識 2
在雜湊表基礎知識 1 中,我們介紹了分離鏈結法來解決雜湊衝突。它的乙個缺陷就是需要經常的分配動態記憶體,這是比較花費時間的。本文再介紹解決雜湊表的另外一種方法開放定址法。不需要動態多次的動態分配記憶體。開放定址法是運用乙個陣列,所有的資料都需要放入這個陣列中,如果發生雜湊衝突,我們通過乙個函式 f ...
HLSL有關的基礎知識
主要是最近在學習xna中有關一些效果的東西,發現了官網上的2d的一些fx效果相當好。其 給出如下鏈結 然後就查了一下hlsl這個範例裡面的fx還都不算太難,可以理解。乙個簡單的hlsl程式,返回乙個材質的各點的顏色。sampler s0 register s0 float4 main float2 ...
字元雜湊基礎知識
定義 字串雜湊,最著名的就是bkdrhash,也就是將字串變成數值,並且最後變成的數值是乙個p進製的數,一般來說p最好為素數.p常見的是131和13331,這是兩個經驗值,出錯率極低。str i 字元陣列 h i 存str 1.i 的雜湊值 p i 存base的i次冪的值 如果h i 和p i 取u...