Time of Update: 2017-01-18
shared_ptr是一種智能指標(smart pointer)。shared_ptr的作用有如同指標,但會記錄有多少個shared_ptrs共同指向一個對象。這便是所謂的引用計數(reference
Time of Update: 2017-01-18
本文執行個體講述了C++實現將簡單密碼譯回原文的方法。分享給大家供大家參考,具體如下:/** 作 者: 劉同賓* 完成日期:2012 年 11 月 28 日* 版 本 號:v1.0* 輸入描述:* 問題描述: 有一行電文,已按下面規律譯成密碼:* A-->Z a-->z* B-->Y b-->y* C-->X c-->x* 即第一個字母變成第26個字母,第i個字母變成第(26-i+1)個字母,非字母字元不變* 要求將密碼譯回原文。* 程式輸出:* 問題分析:
Time of Update: 2017-01-18
在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一係數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數,當電腦正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了srand()函數,它的原形是void srand( int a)。 可能大家都知道C語言中的隨機函數random,可是random函數並不是ANSI
Time of Update: 2017-01-18
參與運算的兩個值,如果兩個相應位相同,則結果為0,否則為1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0例如:10100001^00010001=101100000^0=0,0^1=1 0異或任何數=任何數1^0=1,1^1=0 1異或任何數-任何數取反 任何數異或自己=把自己置0(1)按位異或可以用來使某些特定的位翻轉,如對數10100001的第2位和第3位翻轉,可以將數與00000110進行按位異或運算。10100001^00000110=10100111 //1010
Time of Update: 2017-01-18
題目要求:將數a、b的值進行交換,並且不使用任何中間變數。程式如下: #include<stdio.h>void swapValue1(int &a, int &b) //使用中間變數交換資料{ int temp = a; a = b; b = temp;}void swapValue2(int &a, int &b)//使用加減運算完成資料交換{ a = a + b; b = a - b; a = a - b; }void swapValue3(int &a, int &b) //
Time of Update: 2017-01-18
在C++模板中,可以使用class或者typename來聲明模板參數,那麼這兩個關鍵字有什麼區別呢?模板參數聲明對於模板參數聲明,這兩個參數沒有區別,含義是一樣的。template class Simple;template class Simple;上面兩行都是聲明一個模板類Simple.表明類型假如我們有這樣一段代碼:templatevoid add(const T &acontainer, T &sum){ T::const_iterator iter =
Time of Update: 2017-01-18
C++11支援range-based for迴圈。這是一個很方便的特性,能省挺多代碼。以下代碼就能很方便的遍曆vector中的元素,並列印出來:std::vector<int> int_vec;int_vec.push_back(1);int_vec.push_back(2);//如果要修改int_vec中的元素,將變數x聲明為 int& 即可for (int x: int_vec){ std::cout << x << endl;}可以遍曆的對象包括:
Time of Update: 2017-01-18
由fork建立的新進程被稱為子進程(child
Time of Update: 2017-01-18
在c++中,當一個類含有虛函數的時候,類就具有了多態性。建構函式的一項重要功能就是初始化vptr指標,這是保證多態性的關鍵步驟。建構函式初始化vptr指標下面是c++源碼:class X {private: int i;public: X(int ii) { i = ii; } virtual void set(int ii) {//虛函數 i = ii; }};int main() { X x(1);}下面是對應的main函數彙編碼:_main PROC; 16 :
Time of Update: 2017-01-18
朋友面試的一道面試題,分享給大家,面試官經常會問到的,實現string類的四大基本函數必掌握。一個C++類一般至少有四大函數,即建構函式、拷貝建構函式、解構函式和賦值函數,一般系統都會預設。但是往往系統預設的並不是我們所期望的,為此我們就有必要自己創造他們。在創造之前必須瞭解他們的作用和意義,做到有的放矢才能寫出有效函數。 #include <iostream> class CString { friend std::ostream & operator<<(std:
Time of Update: 2017-01-18
C語言實現字元轉unix時間戳記,需要先轉成tm類型,再得到它的Unix時間戳記。附上實現代碼:#include <stdio.h>#include <time.h>int strtotime(char datetime[]){struct tm tm_time;int unixtime;strptime(datetime, "%Y-%m-%d %H:%M:%S", &tm_time);unixtime = mktime(&tm_time);return
Time of Update: 2017-01-18
在學習c++的過程中,也曾經學習java,就發現java有類的嵌套,而看的c++的書,從來沒有哪個講c++的類可以嵌套,於是就試了一下,看是否c++可以嵌套類(編譯環境vc++6.0)於是有了下面的代碼:#include <iostream>using namespace std;class A{public: A(){ cout<<"this a"<<endl; } ~A(){cout<<"a dead"<<endl;}
Time of Update: 2017-01-18
1. 概述簡單地說,每一個含有虛函數(無論是其本身的,還是繼承而來的)的類都至少有一個與之對應的虛函數表,其中存放著該類所有的虛函數對應的函數指標。例:其中:B的虛函數表中存放著B::foo和B::bar兩個函數指標。D的虛函數表中存放的既有繼承自B的虛函數B::foo,又有重寫(override)了基類虛函數B::bar的D::bar,還有新增的虛函數D::quz。提示:為了描述方便,本文在探討對象記憶體布局時,將忽略記憶體對齊對布局的影響。2.
Time of Update: 2017-01-18
一、重載(overload)指函數名相同,但是它的參數表列個數或順序,類型不同。但是不能靠傳回型別來判斷。(1)相同的範圍(在同一個範圍中) ;(2)函數名字相同;(3)參數不同;(4)virtual 關鍵字可有可無。(5)傳回值可以不同;二、重寫(也稱為覆蓋 override)是指衍生類別重新定義基類的虛函數,特徵是:(1)不在同一個範圍(分別位於衍生類別與基類) ;(2)函數名字相同;(3)參數相同;(4)基類函數必須有 virtual 關鍵字,不能有 static
Time of Update: 2017-01-18
fork的意義下圖為,C 程式的儲存空間布局(典型)1.一個現有進程可以調用 fork 函數建立一個新進程。2.fork 函數被調用一次,但返回兩次, 兩次返回的唯一區別是子進程的傳回值是 0, 而父進程的傳回值是新子進程的 PID。3.子進程和父進程繼續執行 fork 調用之後的指令。在上圖的儲存空間布局中,父子進程只共用本文段,其餘的都各自有獨立的副本 (通常使用 copy-on-write 的策略,速度比較快)。fork 的兩種用法1.父子進程同時執行不同的程式碼片段典型應用:Web
Time of Update: 2017-01-18
forkfork()函數是linux下的一個系統調用,它的作用是產生一個子進程,子進程是當前進程的一個副本,它跟父進程有一樣的虛存內容,但也有一些不同點。但是,值得注意的是,父進程調用fork()後,fork()返回的是產生的子進程(如果能順利產生的話)的ID。子進程執行的起點也是代碼中fork的位置,不同的是下面這段C語言代碼展示了fork()函數的使用方法:// myfork.c#include <unistd.h>#include <stdio.h>int
Time of Update: 2017-01-18
1、堆排序定義n個關鍵字序列Kl,K2,…,Kn稱為堆,若且唯若該序列滿足如下性質(簡稱為堆性質):(1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤
Time of Update: 2017-01-18
快速判斷一個數是否是2的冪次方,若是,並判斷出來是多少次方!將2的冪次方寫成二進位形式後,很容易就會發現有一個特點:二進位中只有一個1,並且1後面跟了n個0; 因此問題可以轉化為判斷1後面是否跟了n個0就可以了。如果將這個數減去1後會發現,僅有的那個1會變為0,而原來的那n個0會變為1;因此將原來的數與去減去1後的數字進行與運算後會發現為零。最快速的方法: (number & number - 1) ==
Time of Update: 2017-01-18
題目:如果字串一的所有字元按其在字串中的順序出現在另外一個字串二中,則字串一稱之為字串二的子串。注意,並不要求子串(字串一)的字元必須連續出現在字串二中。請編寫一個函數,輸入兩個字串,求它們的最長公用子序列,並列印出最長公用子序列。例如:輸入兩個字串BDCABA和ABCBDAB,字串BCBA和BDAB都是是它們的最長公用子序列,則輸出它們的長度4,並列印任意一個子序列。分析:求最長公用子序列(Longest Common Subsequence,
Time of Update: 2017-01-18
最大K乘積問題設I是一個n位十進位整數。如果將I劃分為k段,則可得到k個整數。這k個整數的乘積稱為I的一個k乘積。試設計一個演算法,對於給定的I和k,求出I的最大k乘積。編程任務:對於給定的I 和k,編程計算I 的最大k 乘積。需求輸入:輸入的第1 行中有2個正整數n和k。正整數n是序列的長度;正整數k是分割的段數。接下來的一行中是一個n位十進位整數。(n<=10) 需求輸出:計算出的最大k乘積。解題思路:DP 設w(h,k) 表示: