原创 三大函數:拷貝構造,拷貝賦值,析構函數

    在C++中,對於一個空的類,編譯器一般會默認它有4個成員函數:構造函數、析構函數、拷貝構造函數、拷貝賦值函數。class String { public: String(const char* cstr = 0);//構造函數

原创 頭文件與類的聲明

    我們在開始學習C++時,就應該養成規範大氣的編程習慣,頭文件(header)的佈局就是其中很重要的一個點。我們需要知道頭文件中的防衛式聲明。#

原创 C++中的static使用方法

一、靜態數據成員(static data members)    在介紹靜態數據成員之前,我們先來看看普通的數據成員(data members):class complex { public: double real() const

原创 C++編程

    寫在前面:作爲一位編程小白,一位勇敢走在晉級路上的編程小白,我希望能用博客記錄自己進步的過程,同時將學習筆記分享出來,和各位朋友共同進步。讓我們跟隨侯捷老師的腳步,一起開始C++的學習吧! C++面向對象程序設計(Object O

原创 操作符重載與臨時對象

    在C++中,操作符重載的意思就是把已經定義的、有一定功能的操作符進行重新定義,來完成更爲細緻具體的運算等功能。C++中有許多內置的數據類型,如char,int,float等,每一種類型都有許多運算符,如加、減、乘、除等。當用戶定義

原创 構造函數

    類的構造函數(construction function)是類的一種特殊的成員函數,它會在每次創建類的新對象時執行。    構造函數的特性有以下幾點:    (1)構造函數名和類名完全相同;    (2)沒有返回值(void也算返

原创 堆、棧與內存管理

    C++的內存區域分爲五個區,分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區。    (1)Stack(棧),是存在於某作用域(scope)的一塊內存空間(memory space)。例如當你調用函數,函數本身即會形成一個s

原创 複數類的實現

#ifndef __MYCOMPLEX__ #define __MYCOMPLEX__ //前置聲明 class complex; complex& __doapl (complex* ths, const complex& r)

原创 參數傳遞與返回值

    在C++中,如果聲明類的成員函數時,在參數列(小括號)之後函數體(花括號)之前,加上修飾符const,則稱該成員函數爲類的常量成員函數。我們來看下面這個示例程序:class complex { public: complex

原创 組合與繼承

    在面向對象編程(OOP)和麪向對象設計(OOD)中,類與類之間有三大關係,分別是繼承(Inheritance)、複合(Composition)和委託(Delegation)。一、Composition(複合),表示has-atem

原创 CUDA下在Host端分配的幾種內存模式

平時我們使用的內存都是Pageable(交換頁)的,而另一個模式就是Pinned(Page-locked),實質是強制讓系統在物理內存中完成內存申請和釋放的工作,不參與頁交換,從而提高系統效率,需要使用cudaHostAlloc和cuda

原创 k-NN

k近鄰算法的工作原理: 存在一個樣本數據集合(訓練樣本集),並且樣本集中每個數據都存在標籤,我們知道樣本集中每一數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本集中特徵

原创 多線程——pthread_create使用

利用pthread_create函數,進程同時創建N個線程,各自調用同一個函數 pthread_create函數中有四個參數:創建的線程id,線程參數,線程運行函數的起始地址,運行函數的參數 利用pthread_join函數等待一個線程的

原创 CUDA之二維數組分配內存及初始化

       在GPU中,對一維數組分配內存使用的是cudaMalloc函數,但是對於二維數組,使用cudaMalloc來分配內存並不能得到最好的性能。因爲對於2D內存,對齊是一個很重要的性質,cudaMallocPitch函數能夠保證分

原创 VS2013配置使用pthread多線程

  POSIX線程(POSIX threads),簡稱pthreads,是線程的POSIX標準。該標準定義了創建和操縱線程的一整套API.在類Unix操作系統(Unix、Linux、Mac OS X等)中,都使用pthreads作爲操作系