原创 防止模板代碼膨脹

轉載自百度文庫 模板導致的代碼膨脹問題和解決 模板是一種源碼複用技術,在某些情況下使用它可以使代碼看起來非常優雅,著名的boost庫就是模板發揚的典範. 然而模板也存在弊端,大量使用模板可能導致代碼膨脹.下面介紹一種解決的方案: 我們首

原创 C++中爲什麼要設置緩衝區

轉載自Leeboy_Wang 之前用endl一直以爲它只是一個回車換行的功能,剛剛纔知道原來endl還有一個功能使用來刷新緩衝區的。除了endl之外,c++中還有ends,flush,unitbuf,nounitbuf。爲什麼要刷新緩衝區

原创 MSDN中關於fprintf()的註解

// crt_fprintf.c /* This program uses fprintf to format various  * data and print it to the file named FPRINTF.OUT. It

原创 鄰接表的實現

鄰接表的實現,主要是一個頂點的表,其節點結構爲VNode,同時各個VNode作爲頭節點,來鏈接起它的鄰接點,它的鄰接點爲EdgeNode。 header.h #include<iostream> using namespace std;

原创 直接選擇排序法

// 直接選擇排序法.cpp : 定義控制檯應用程序的入口點。 // #include "stdafx.h" #include<iostream> using namespace std; void Zhi_Xuan_P(int * a,

原创 C++類模板的三種特化

轉載自信念 說起C++的模板及模板特化, 相信很多人都很熟悉 ,但是說到模板特化的幾種類型,相信瞭解的人就不是很多。我這裏歸納了針對一個模板參數的類模板特化的幾種類型, 一是特化爲絕對類型; 二是特化爲引用,指針類型;三是特化爲另外一個類

原创 VS編譯器的記憶問題

#include <iostream>   #include <stdexcept> //runtime_error在其中定義   using namespace std;   int main(){         int ival;

原创 用C++實現表達式求值

算法思想:使用兩個棧,分別用來存儲數和運算符,使用一個字符串來接受所要進行運算的表達式,用字符串中的符號與存儲符號的棧進行比較,如果外來的運算符優先級大於棧內的運算符,則將存儲數的棧頂出棧與字符串的下一個字符進行運算。否則將其壓棧。最後得

原创 關於函數模板重載的調用順序

#include<cstring> #include<iostream> using std::strcmp; using std::cout; using std::endl; template<typename T>const T &

原创 直接選擇排序法

#include<iostream> using namespace std; int main() { int i,j,min,t; int a[10]={1,2,5,4,3,7,6,9,8,0}; for(i=0;i<10;i+

原创 鄰接矩陣

對於圖的一種表示方式,我覺得鄰接矩陣是非常易於理解的一種結構,使用一個一維數組來存放各個頂點,用一個二維數組的下標來表示相應的頂點數組中的頂點,用二維數組的值來表示是否存在指向的關係。對於網,其值則可以表示相應的權值。 header.h

原创 折半插入排序法

#include<iostream> using namespace std; int main() { int i,j,t,low=0,high,mid; int a[10]={0,5,4,3,2,7,6,9,8,0}; for(

原创 基於鄰接表的深度優先搜索

header.h #include<iostream> using namespace std; const int MaxVertexNum=20; struct EdgeNode{ int adjvex; struct EdgeN

原创 順序表

  順序表是利用數組來實現的線性結構,主要是能執行一些插入和刪除的操作。 //A。h #ifndef A_H #define A_H //#include<vector.h> #include<iostream> using names

原创 關於基於鄰接矩陣的深度優先搜索

header.h#include<iostream> #include<iomanip> using namespace std; const int MaxVertexNum=20; class MGraph { public: M