C++學習筆記(一)

1.C++定義了一組內置的基本數據類型:整數類型(int)、浮點數類型(float)、字符型(char)、布爾類型(Boolean);

C++標準庫還提供了一組擴展的基本數據類型:字符串(String)、複數(complex number)、向量(vector)、列表(list);

例1:#include<String>

String str = "getting started";


#include <vector>

vector<string>  chapter_titles(20);

2.預處理器指示符

#include:指示符讀入制定文件的內容

#ifndef  _H

#define _H

#endif

條件指示符可防止頭文件的重複處理;

#ifdef  DEBUG

#endif   

調試使用


#ifdef __cplusplus

extern "c"

#endif

我們可以根據他來判斷該程序是否是C++程序,以便有條件地包含一些d代碼。

__LINE__:記錄文件已經編譯的行數

__FILE__:包含正在被編譯的文件的名字

__TIME__:編譯時間,時間格式爲hh:mm:ss

__DATE__:編譯日期


assert():是C語言標準庫中提供的一個通用處理器宏。


3.註釋

(1)C++中有兩種註釋符號,一種(/× ×/);註釋對不能嵌套;解決嵌套註釋的辦法:在星號和斜線之間加一個空格

(2)雙斜線(//)

4.文件的輸入和輸出

(1)iostream庫

例2:#include <iostream.h>

#include <fstream>

//打開一個輸出文件

ofstream outfile("name of file");

if(!outfile){

cout<<"sorry!"

}

//打開一個文件供輸入

ifstream infile("name of file")

if(!infile){

cout<<"sorry!";

}


#include <iostream.h>
#include <fstream.h>
#include "string.h"


int main(){
ofstream outfile("out_file");
ifstream infile("in_file");
if(!infile){
cout<<"unable to open input file!\n";
return -1;
}
if(!outfile){
cout<<"unable to open output file!\n";
return -2;
}


char word[1024];
while(infile>>word){
cout<<word<<endl;
outfile<<word<<'\n';
}
return 0;
}

上述例子實現文件的拷貝;

4.C++對數組類型的支持

(1)內置數組的缺點?

(2)如何改善?

(3)Array類型與C++標準庫中的vector類的比較,並瞭解泛型算法;

5.動態分配內存和指針

(1)靜態內存分配

(2)動態內存分配

(3)內存泄漏:忘記刪除動態分配的內存

(4)函數重載機制:允許兩個或更多個函數使用同一個名字,限制條件是他們的參數表必須不同、參數類型不同、或者參數的數目不同;

(5)構造函數和析構函數

(6)域操作符:雙冒號(::);

(7)泛型設計

(8)模板機制

5.基於異常的設計(exception)

6.命名空間

7.標準數組--向量

向量是一個類模板:

vector<int> ivec(10);  //定義一個包含10個整型對象的向量

vector<string> svec(10);//定義一個包含10個字符串對象的向量

Array類模板與vector類模板的實現之間有兩個主要區別:

第一個:vector類模板支持“向現有的數組元素賦值”的概念以及"插入附加元素"的概念,即vector數組可以在運行時刻動態增長;

第二個:vector類不是提供一個巨大的“可以適用於向量”的成員操作符,而只是提供了一個最小集。

#include<vector>

//創建vector對象的各種方法

vector<int> veco;//空的vector

vector<int> vec1(size);

vector<int> vec2(size,value);

.......

遍歷方法:

(1):下標遍歷

(2):使用迭代器對來標記向量的起始處和結束處(iterator pair);

==>>迭代器:是一個支持指針類型抽象的類對象,vector類模板提供了一堆操作begin()和end(),他們分別返回指向“向量開始處”和:結束處後一個:的迭代

器。

例3:#include<vector>


extern int getSize();

void mumble(){

int size = getSize();

vector<int> vec(size);

vector<int>::iterator iter = vec.begin();

for(int ix=0;iter !=vec.end(); ++iter,++ix){

*iter = ix;

//...

}



}








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章