C++精华基础贴[水木清华]
生活随笔
收集整理的這篇文章主要介紹了
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
發(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)題。
- 上一篇: 硬件三人行,运放基础第2讲听课笔记,电路
- 下一篇: s3c2440移植MQTT