原创 chromium 68的智能指針實現原理

Chromium的智能指針由類scoped_refptr實現。由於它要求被引用對象具有計數功能,因此就提供了一個具有計數功能的基類RefCounted。當一個對象可以被類scoped_refptr描述的對象引用時,它就必須要從基類

原创 如何防止類被繼承

方法有一下兩種: 1、將類後面加一個final關鍵字,最簡單; 2、利用私有構造函數,然後提供public的方法創建對象或者設定友元。 重點說說方法2: (1)將構造函數設爲私有,提供public方法進行對象的創建,利用的

原创 class字節計算

1、類的大小 類的sizeof()大小一般是類中的所有成員的sizeof()大小之和,這個就不用多說。確切的說,用sizeof運算符對一個類型名操作,得到的是具有該類型實體的大小。注意:類只是一個類型定義,它本身是沒有大小可言的。

原创 單詞統計問題

華爲OJ 輸入一行英文文本,要求輸出出現頻率最高和最低的單詞,中間以,.和空格進行分割,大小不同的單詞視爲同一個,如果單詞數目相同,則輸出第一次出現的那個。輸出均爲小寫形式。如”Hello world, i said

原创 火車進站問題

華爲OJ【問題描述】 給定一個正整數N代表火車數量,0< N<10,接下來輸入火車入站的序列,一共N輛火車,每輛火車以數字1-9編號。要求以字典序排序輸出火車出站的序列號。 輸入: 有多組測試用例,每一組第一行輸入一個正整數

原创 數組中最長遞增子序列

數組是亂序的,如1,-1,2,-3,4,-5,6,-7 根據無後效性定義,數組中當前元素所形成的子序列與其前面元素形成的子序列沒有關係,所以: LIS[i+1] = max(1,LIS[k]+1),其中,array[i+1]

原创 尋找最近點對

具體分析見編程之美解法三,借鑑網上的代碼,但其有錯誤,再次修正。 代碼如下: #include <stdio.h> #include <algorithm> #include <vector> #include <m

原创 給定一個十進制n,從1開始,到n的所有整數,求出現1的個數

使用數學歸納法,代碼如下: /統計出現1的個數,使用數學歸納法,得出的規律如下: //分別計算每一位可能出現的1的次數,然後把每一位的次數相加 //思想:1、若當前位爲0,則出現的次數僅由其更高位的數字決定,值爲:更高位數字*當前

原创 strcpy與memcpy的區別

strcpy的函數解釋: 原型聲明:extern char *strcpy(char *dest, const char *src); 頭文件:string.h 功能:把從src地址開始且含有NULL結束符的字符串複製到以d

原创 struct字節計算

若結構體爲空,其大小爲1; 若不爲空,結構體的存儲比較複雜,並不是簡單的字節相加,比如: struct student { char name; int id; double score

原创 找零錢問題

人民幣有1、2、5、10、20、50、100這幾種面值。 現在給你n(1≤n≤250)元,讓你計算換成用上面這些面額表示且總數不超過100張,共有幾種。 比如4元,能用4張1元、2張1元和1張2元、2張2元,三種表示方法。

原创 delete和delete[]的區別

轉載地址:http://blog.csdn.net/hazir/article/details/21413833 C++中,類型分爲兩種:內置類型和自定義的類類型。在釋放內存時分爲釋放內置類型和自定義類型的數組。 1、對於單個

原创 如何重載前置++和後置++

前置++:即++運算符位於操作數的前面,例如:++i; 後置++:即++運算符位於操作數後面,例如:i++; 注意一下幾點: 1、前置++重載時沒有參數,而後置++重載時有參數。不會使用其參數,僅僅是區分用。可以理解爲前置+

原创 dll庫直接使用 lib載入和LoadLibrary載入的區別

lib 是dll的導入庫,在vs工程中添加對應lib和頭文件就可以 這個方法很簡單, 但是有2個缺點: 1 程序一開始運行就需要載入整個dll,無法載入程序就不能開始運行; 2 由於載入的是整個dll,需要耗費資源較多 LoadL

原创 智能指針auto_ptr、內存泄漏解決

在C++11中,已經不使用auto_ptr,而用 unique_ptr進行替代,不過二者原理都差不多。頭文件:memory 智能指針:實質上是一個類,在創建智能指針的時候,本質上是在棧上創建了一個對象,而析構函數總是會在出棧時被