日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++精华基础贴[水木清华]

發(fā)布時(shí)間:2024/3/26 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++精华基础贴[水木清华] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
導(dǎo)讀:
  發(fā)信人: CDRAGON (CDRAGON), 信區(qū): CPlusPlus
  標(biāo) 題: 基礎(chǔ)知識(shí)
  發(fā)信站: BBS 水木清華站 (Mon Nov 20 13:03:14 2006), 站內(nèi)
  八進(jìn)制:以數(shù)字0開(kāi)頭
  十六進(jìn)制:以0x或者0X開(kāi)頭
  Q:如何實(shí)現(xiàn) 字符串<=>各種數(shù)字類(lèi)型 的轉(zhuǎn)換?
  A:通用的方法:sprintf 實(shí)現(xiàn)數(shù)字=>字符串
  sscanf 實(shí)現(xiàn)字符串=>數(shù)字
  其他方法:字符串=>數(shù)字 atoi atof atol分別實(shí)現(xiàn)字符串到int、double、long的轉(zhuǎn)換
  數(shù)字=>字符串 _itoa _ltoa分別實(shí)現(xiàn)int、long到字符串的轉(zhuǎn)化,
  其中double=>string比較特殊,有_ecvt _fcvt _gcvt
  如果使用MFC的CString類(lèi),還可以使用.Format方法。
  Q:各種基本數(shù)據(jù)類(lèi)型的范圍和精度如何?
  A:Type Name Bytes Other Names Range of Values
  int * signed (int) System dependent
  char 1 signed char -128 to 127
  long 4 (signed) long int -2,147,483,648 to 2,147,483,647
  float 4 none 3.4E +/- 38 (7 digits)
  double 8 none 1.7E +/- 308 (15 digits)
  long double 10 none 1.2E +/- 4932 (19 digits)
  //資料來(lái)源:MSDN Oct2001,但是實(shí)際測(cè)試有些并不符合
  
  Q:有關(guān)模板template
  A:模板的定義和實(shí)現(xiàn)必須都放在頭文件里!如果你不幸把定義和實(shí)現(xiàn)分別寫(xiě)在了
  MyTemplate.h和MyTemplate.cpp里,那么請(qǐng)?jiān)?include "MyTemplate.h"后
  加一句#include "MyTemplate.cpp"
  Q:如何獲取時(shí)間?精度如何?
  A:1 使用time_t time( time_t * timer ) 精確到秒
  2 使用clock_t clock() 得到的是CPU時(shí)間 精確到1/CLOCKS_PER_SEC秒
  3 計(jì)算時(shí)間差使用double difftime( time_t timer1, time_t timer0 )
  4 使用DWORD GetTickCount() 精確到毫秒
  5 如果使用MFC的CTime類(lèi),可以用CTime::rmat方法。
  Q:各種基本數(shù)據(jù)類(lèi)型的范圍和精度如何?
  A:Type Name Bytes Other Names Range of Values
  int * signed (int) System dependent
  char 1 signed char -128 to 127
  long 4 (signed) long int -2,147,483,648 to 2,147,483,647
  float 4 none 3.4E +/- 38 (7 digits)
  double 8 none 1.7E +/- 308 (15 digits)
  long double 10 none 1.2E +/- 4932 (19 digits)
  //資料來(lái)源:MSDN Oct2001,但是實(shí)際測(cè)試有些并不符合
  Q:有關(guān)模板template
  A:模板的定義和實(shí)現(xiàn)必須都放在頭文件里!如果你不幸把定義和實(shí)現(xiàn)分別寫(xiě)在了
  MyTemplate.h和MyTemplate.cpp里,那么請(qǐng)?jiān)?include "MyTemplate.h"后
  加一句#include "MyTemplate.cpp"
  Q:如何獲取時(shí)間?精度如何?
  A:1 使用time_t time( time_t * timer ) 精確到秒
  2 使用clock_t clock() 得到的是CPU時(shí)間 精確到1/CLOCKS_PER_SEC秒
  3 計(jì)算時(shí)間差使用double difftime( time_t timer1, time_t timer0 )
  4 使用DWORD GetTickCount() 精確到毫秒
  5 如果使用MFC的CTime類(lèi),可以用CTime::GetCurrentTime() 精確到秒
  6 要獲取高精度時(shí)間,可以使用
  BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)
  獲取系統(tǒng)的計(jì)數(shù)器的頻率
  BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
  獲取計(jì)數(shù)器的值
  然后用兩次計(jì)數(shù)器的差除以Frequency就得到時(shí)間。
  7 還有David的文章中提到的方法:
  Multimedia Timer Functions
  The following functions are used with multimedia timers.
  timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
  Q:有關(guān)模板template
  A:模板的定義和實(shí)現(xiàn)必須都放在頭文件里!如果你不幸把定義和實(shí)現(xiàn)分別寫(xiě)在了
  MyTemplate.h和MyTemplate.cpp里,那么請(qǐng)?jiān)?include "MyTemplate.h"后
  加一句#include "MyTemplate.cpp"
  
  Q:如何獲取時(shí)間?精度如何?
  A:1 使用time_t time( time_t * timer ) 精確到秒
  2 使用clock_t clock() 得到的是CPU時(shí)間 精確到1/CLOCKS_PER_SEC秒
  3 計(jì)算時(shí)間差使用double difftime( time_t timer1, time_t timer0 )
  4 使用DWORD GetTickCount() 精確到毫秒
  5 如果使用MFC的CTime類(lèi),可以用CTime::GetCurrentTime() 精確到秒
  6 要獲取高精度時(shí)間,可以使用
  BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)
  獲取系統(tǒng)的計(jì)數(shù)器的頻率
  BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
  獲取計(jì)數(shù)器的值
  然后用兩次計(jì)數(shù)器的差除以Frequency就得到時(shí)間。
  7 還有David的文章中提到的方法:
  Multimedia Timer Functions
  The following functions are used with multimedia timers.
  timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
  timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高
  Q:有關(guān)指針和指針的引用
  A:指針的引用是合法的,引用的指針是非法的。
  聲明的時(shí)候要用 TYPE * &variable,不能用TYPE &* variable
  Q:有關(guān)隨機(jī)數(shù)的問(wèn)題
  Q1:如何得到給定范圍的隨機(jī)數(shù)?
  A1:如要得到[a,b)區(qū)間的隨機(jī)數(shù),那么使用 ( rand()%(b-a) ) + a 就可以
  Q2:我用rand()得到的隨機(jī)數(shù)序列怎么每次都是一樣的?
  A2:rand()產(chǎn)生的是偽隨機(jī)數(shù),所以如果想每次產(chǎn)生不同的序列,需要給定隨機(jī)數(shù)生
  成的種子,使用函數(shù)void srand(unsigned int seed),一般都使用
  srand((unsign時(shí)間,可以使用
  BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)
  獲取系統(tǒng)的計(jì)數(shù)器的頻率
  BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
  獲取計(jì)數(shù)器的值
  然后用兩次計(jì)數(shù)器的差除以Frequency就得到時(shí)間。
  7 還有David的文章中提到的方法:
  Multimedia Timer Functions
  The following functions are used with multimedia timers.
  timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
  timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高
  Q:有關(guān)指針和指針的引用
  A:指針的引用是合法的,引用的指針是非法的。
  聲明的時(shí)候要用 TYPE * &variable,不能用TYPE &* variable
  Q:有關(guān)隨機(jī)數(shù)的問(wèn)題
  Q1:如何得到給定范圍的隨機(jī)數(shù)?
  A1:如要得到[a,b)區(qū)間的隨機(jī)數(shù),那么使用 ( rand()%(b-a) ) + a 就可以
  Q2:我用rand()得到的隨機(jī)數(shù)序列怎么每次都是一樣的?
  A2:rand()產(chǎn)生的是偽隨機(jī)數(shù),所以如果想每次產(chǎn)生不同的序列,需要給定隨機(jī)數(shù)生
  成的種子,使用函數(shù)void srand(unsigned int seed),一般都使用
  srand((unsigned)time(NULL));這種方式
  Q3:如何得到隨機(jī)的浮點(diǎn)數(shù)?
  Q3:沒(méi)有太好的方法,可以試試rand()/double(RAND_MAX)以得到0~1之間的隨機(jī)數(shù)
  
  Q:如何使用一些數(shù)學(xué)常量?
  Q1:PI
  A1:用double表示有15位,用long double表示有19位,
  pi = 3.141592653589793或者const long double pi = 2*acos(0);
  Q2:E
  A2:不會(huì)吧?exp()你都不會(huì)用嗎?
  還有,log()是以e為底的自然對(duì)數(shù),log10是以10為底的常用對(duì)數(shù)
  Q:cout如何控制輸出格式?
  A:1 數(shù)字進(jìn)制:使用hex、dec、oct控制輸出數(shù)字的進(jìn)制
  2 如何對(duì)齊:使用setw控制寬度
  3 設(shè)置精度:使用setprecision控制輸出精度
  4 填充字符:使用setfill控制填充字符
  5 控制格式:使用setioflags(ios_base::fmtflags mask)來(lái)控制
  常用的有ios::fixed固定的浮點(diǎn)顯示
  ios::scientific指數(shù)表示
  ios::left / ios::right 左/右對(duì)齊
  ios::skipws忽略前導(dǎo)空白
  signed)time(NULL));這種方式
  Q3:如何得到隨機(jī)的浮點(diǎn)數(shù)?
  Q3:沒(méi)有太好的方法,可以試試rand()/double(RAND_MAX)以得到0~1之間的隨機(jī)數(shù)
  Q:如何使用一些數(shù)學(xué)常量?
  Q1:PI
  A1:用double表示有15位,用long double表示有19位,
  pi = 3.141592653589793或者const long double pi = 2*acos(0);
  Q2:E
  A2:不會(huì)吧?exp()你都不會(huì)用嗎?
  還有,log()是以e為底的自然對(duì)數(shù),log10是以10為底的常用對(duì)數(shù)
  Q:cout如何控制輸出格式?
  A:1 數(shù)字進(jìn)制:使用hex、dec、oct控制輸出數(shù)字的進(jìn)制
  2 如何對(duì)齊:使用setw控制寬度
  3 設(shè)置精度:使用setprecision控制輸出精度
  4 填充字符:使用setfill控制填充字符
  5 控制格式:使用setioflags(ios_base::fmtflags mask)來(lái)控制
  常用的有ios::fixed固定的浮點(diǎn)顯示
  ios::scientific指數(shù)表示
  ios::left / ios::right 左/右對(duì)齊
  ios::skipws忽略前導(dǎo)空白
  ios::uppercase / ios::lowercase 十六進(jìn)制大/小寫(xiě)輸出
  別忘了加上頭文件:#include
  Q:如何創(chuàng)建二維數(shù)組?
  A:方法1
  TYPE * * arrayName;
  arrayName = new TYPE * [SIZE_1];
  for ( i=0 ;i
  {
  arrayName[i] = new TYPE[SIZE_2];
  }
  使用完畢后不要忘記釋放內(nèi)存:
  for ( i=0 ;i{
  if ( arrayName[i]!=NULL ) delete [] arrayName[i];
  }
  if ( arrayName!=NULL ) delete [] arrayName;
  備注:在使用這種方法創(chuàng)建的數(shù)組時(shí),如果需要把數(shù)組傳遞給函數(shù)的時(shí)候,
  可以傳遞TYPE **的指針,但是如果使用TYPE arrayName[][]創(chuàng)建數(shù)組
  無(wú)論幾維數(shù)組都是TYPE * 的指針,如果試圖傳遞TYPE **的指針,會(huì)報(bào)告錯(cuò)誤
  方法2(推薦)
  參見(jiàn)kirbyzhou《關(guān)于動(dòng)態(tài)數(shù)組》一文
  Q:如何使用復(fù)數(shù)類(lèi)?
  A:#include
  using name維數(shù)組?
  A:方法1
  TYPE * * arrayName;
  arrayName = new TYPE * [SIZE_1];
  for ( i=0 ;i
  {
  arrayName[i] = new TYPE[SIZE_2];
  }
  使用完畢后不要忘記釋放內(nèi)存:
  for ( i=0 ;i{
  if ( arrayName[i]!=NULL ) delete [] arrayName[i];
  }
  if ( arrayName!=NULL ) delete [] arrayName;
  備注:在使用這種方法創(chuàng)建的數(shù)組時(shí),如果需要把數(shù)組傳遞給函數(shù)的時(shí)候,
  可以傳遞TYPE **的指針,但是如果使用TYPE arrayName[][]創(chuàng)建數(shù)組
  無(wú)論幾維數(shù)組都是TYPE * 的指針,如果試圖傳遞TYPE **的指針,會(huì)報(bào)告錯(cuò)誤
  方法2(推薦)
  參見(jiàn)kirbyzhou《關(guān)于動(dòng)態(tài)數(shù)組》一文
  Q:如何使用復(fù)數(shù)類(lèi)?
  A:#include
  using namespace std;
  complex就好了
  Q:常見(jiàn)數(shù)據(jù)結(jié)構(gòu),如鏈表等等,有現(xiàn)成能用的嗎?
  A:STL(Standard Template Library)里有很多東西,
  如heap、list、map、queue、set、stack、string、vector……
  Q:>>和> >的二義性問(wèn)題
  A:舉例說(shuō)明:vectorGroup就是錯(cuò)的
  而:vectorGroup就是對(duì)的
  無(wú)論幾維數(shù)組都是TYPE * 的指針,如果試圖傳遞TYPE **的指針,會(huì)報(bào)告錯(cuò)誤
  方法2(推薦)
  參見(jiàn)kirbyzhou《關(guān)于動(dòng)態(tài)數(shù)組》一文
  Q:如何使用復(fù)數(shù)類(lèi)?
  A:#include
  using namespace std;
  complex就好了
  Q:常見(jiàn)數(shù)據(jù)結(jié)構(gòu),如鏈表等等,有現(xiàn)成能用的嗎?
  A:STL(Standard Template Library)里有很多東西,
  如heap、list、map、queue、set、stack、string、vector……
  using namespace std;
  complex就好了
  Q:常見(jiàn)數(shù)據(jù)結(jié)構(gòu),如鏈表等等,有現(xiàn)成能用的嗎?
  A:STL(Standard Template Library)里有很多東西,
  如heap、list、map、queue、set、stack、string、vector……
  Q:>>和> >的二義性問(wèn)題
  A:舉例說(shuō)明:vectorGroup就是錯(cuò)的
  而:vectorGroup就是對(duì)的
  --
  ※ 修改:CDRAGON 于 Nov 21 18:17:21 修改本文[FROM: 59.66.132.*]
  ※ 來(lái)源:BBS 水木清華站 smth.edu.cn[FROM: 59.66.132.*]
  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1507419

本文轉(zhuǎn)自
http://blog.csdn.net/seraphsky/archive/2007/02/11/1507419.aspx

總結(jié)

以上是生活随笔為你收集整理的C++精华基础贴[水木清华]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。