顯示具有 c 標籤的文章。 顯示所有文章
顯示具有 c 標籤的文章。 顯示所有文章

2010年6月30日 星期三

[C++]計算程式執行時間

兩個解決方案

// C 的寫法, in second,只能精準到秒
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
int main(int argc, char *argv[]){
  time_t start;
  time_t end;
  start = time (&start); 
  // do something here
  end = time (&end);
  cout <<"time:" << end - start << endl;
}



// C++的寫法,in millisecond,可計算到零點多秒
#include "stdio.h"
#include "time.h"
#include "stdlib.h"
int main(int argc, char *argv[]){
  clock_t start_time, end_time;
  float total_time = 0;
  start_time = clock(); /* mircosecond */
  //do something here
  end_time = clock();

   /* CLOCKS_PER_SEC is defined at time.h */
    total_time = (float)(end_time - start_time)/CLOCKS_PER_SEC;

    printf("Time : %f sec \n", total_time);
}

2010年2月24日 星期三

[快速筆記C++] new 物件 有無星號的差別

 C++在new物件時,有無星號*的差別

一個是指說,透過指標去取;另一個是透過物件去取

當用* 指標去初始化物件時,就無法用 "." (點) 來存取屬性、方法,必須用"->"
(反之,沒有用指標去初始化物件時,則可以用"."點來存取)

By 拉拉學姐

後記:不用指標 new 似乎是比較差的用法,會一次allocate一大塊memory

2010年2月18日 星期四

[C++]將字串轉換為字元array

在C++中若要將字串物件轉換為字元陣列型態

好像不能直接轉換?! (若有方法請高手指點)

需使用到string類別中的 c_str 靜態方法,將字串物件傳回一個指標(指向字元陣列)

str.c_str();

配合strcpy複製到新的字元陣列

char * strcpy ( char * destination, const char * source );

然後才能用C++裡面沒有split字串的函數....strtok

char * strtok ( char * str, const char * delimiters );

每次呼叫strtok()...pointer會逐次往後到被切開的字串(實際上是字元陣列)起始位置

[C++] :: 兩個冒號的意思

拉拉學姐版解答:

(1)存取靜態方法或屬性
比方 int a = Context::para1

(2) name space 下的某個東東
std::vector

(3)在*.cpp檔裏實作*.h檔裏某物件的方法時
aclass::method1(balabala..){

}
大致是這三種

2010年2月17日 星期三

[C++] cout 控制浮點數輸出位數

#include <iomanip>  // setprecision 使用的函式庫

// 輸出 5.68 自動四捨五入
cout << setprecision(3) << 5.678 << endl;

// 輸出 5.68 fixed...控制小數點後的位數
cout << fixed << setprecision(2) << 5.678<< endl;



2010年2月14日 星期日

[C++] namespace 名稱空間

名稱空間存在的意義,主要是為了避免當程式碼規模越來越大時

可能遇到相同變數名稱、函式名稱或類別名稱

當情況發生時,其中一個定義就被另一個定義給覆寫掉了

namespace是一個管理的工具,將名稱定義在不同的namespace可以避免名稱產生衝突

C++的標準函式庫皆定義在std名稱空間中,所以在檔案的最前頭必須加上

using namespace std