2020C++

c++

第四章:C++基礎容器

4.1 序列容器–數組

概念:

    代表內存裏一組連續的同類型存儲區

    可以用來把多個存儲區合併成一個整體

比如:

      int aar[10] = {1,2,3,4,5,6,7,8};

數組聲明:

  • int arr[10];
  • 類型名稱int便是數組裏所有元素的類型
  • 名稱arr是數組名稱
  • 整數10是數組裏包含的元素個數
  • 數組裏元素個數不可以改變

數組

使用:

  • 每個元素都有下標,通過下標可以直接訪問任意一個元素
  • 下標從0開始到元素個數減一爲止
  • 數組名稱和下標一起可以表示數組裏的元素 a[4]

優點:

  • 可以編寫循環依次處理數組裏的所有元素
  • 循環變量依次代表所有有效下標

for(int index = 0;index < len; ++index) { cout << ia[index] << " "; }在這裏插入圖片描述

off-by-one error (差一錯誤之邊界)

再考慮一個簡單的問題:假定整數X滿足邊界條件 X >= 16 並且 X <= 37,那麼此範圍內X的可能取值個數有多少個?
我們進行思考時有兩個思考問題的原則:
1、首先考慮最簡單情況的特例、然後將結果外推;
2、仔細計算邊界;

X的上界與下界重合時,即 X >= 16 && X <= 16,顯然個數是1;
假定下界位low,上界位high;當low與high重合時。low = high時,個數爲1;
據此外推,high - low + 1個元素;所以這裏37 - 16 +1 = 22

這裏最容易出錯的地方就是 high - low + 1
是否存在一些編輯技巧來避免這樣的問題呢?

使用數學上的左閉右開區間表示,[ )
問題表示位: X >= 16 並且 X <=37 -> (X >= 16 && X <38),這樣38-16 = 22

數組元素的遍歷

在這裏插入圖片描述C語言中設計數組下標的原則: 從0開始,使用非對稱區間;
1、讓這個區間是一個非對稱的區間[ ,) }
2、讓上界(左側)可以取到值,讓下界(右側)取不到值;

數組的增刪改查

在這裏插入圖片描述

數組元素的添加和刪除

在這裏插入圖片描述

數組元素的訪問、修改在這裏插入圖片描述

數組元素的查找

在這裏插入圖片描述

二維數組在這裏插入圖片描述

二維數組的訪問代碼

	// 二維數組訪問
	int arr[][4] = { {1,2,3,4},{5,6,7,8} };
	for (int row = 0; row < 2; ++row)
	{
		for (int col = 0; col < 4; ++col)
		{
			cout << arr[row][col] << " ";
		}
		cout << endl;
	}

4.2 C++新型數組——vector簡介

Vector是面向對象方式的動態數組

在這裏插入圖片描述

Vector是面向對象方式的動態數組在這裏插入圖片描述

Vector尾部添加操作

在這裏插入圖片描述

Vector的遍歷操作

在這裏插入圖片描述

	// vector動態數組
	vector<int> vec = { 1,2,3,4 };

	cout << "initlization: vec.capacity()" << vec.capacity() << endl;
	cout << "initlization: vec.size()" << vec.size() << endl;
	// 遍歷vector元素
	for (unsigned int index = 0; index < vec.size(); ++index)
	{
		cout << vec[index] << " ";
	}
	cout << endl;

	// 在尾部插入一個元素
	vec.push_back(5);
	cout << "now: vec.capacity()" << vec.capacity() << endl;
	cout << "now: vec.size()" << vec.size() << endl;
	// 遍歷vector元素
	for (unsigned int index = 0; index < vec.size(); ++index)
	{
		cout << vec[index] << " ";
	}

Vector的插入操作 在這裏插入圖片描述

Vector的刪除操作

在這裏插入圖片描述

4.3 C++的字符串和字符數組

字符串變量和常量

字符串變量

  • 字符串是以空字符(’\0’)結束的字符數組
  • 空字符 ‘\0’ 自動添加到字符串的內部表示中
  • 在聲明字符串變量時,應該爲這個空結束符預留一個額外元素的空間 如:
    char strHelloworld[11] = {“helloworld”};

字符串常量

  • 字符串常量是一對雙引號闊氣倆的字符序列
  • 字符串中每個字符作爲一個數組元素來存儲
    例如字符串:“helloworld”

關於字符表示說明

0、’\0’ 與 ‘0’

在計算機內部的機器碼錶示:
char c1 = 0; -> 0x00
char c2 = '\0; -> 0x00
char c3 = ‘0’; -> 0x30

ASCII碼錶

ASCII是基於拉丁字母的一套編碼系統,主要用於顯示現代英語和其他西歐語言。
他是最通用的信息交換標準,並等同於國際標準ISO/IEC 646
ASCII使用指定的7位或8位二進制數組合來表示128或256中可能的字符。
編碼表可參考:https://baike.baidu.com/item/ASCII/309296?fromtitle=ascii%E7%A0%81%E8%A1%A8&fromid=19660475&fr=aladdin

在這裏插入圖片描述

Unicode編碼:

最初的目的是把世界上的文字都映射到一套字符空間中

字符串的指針表示方法

在這裏插入圖片描述
在這裏插入圖片描述

字符串基本操作1

字符串長度strlen(s)在這裏插入圖片描述

字符串比較 strcmp(const char* pStr1,const char* pStr2)

在這裏插入圖片描述

字符串拷貝 strcpy(char* pStr1,const char *pStr2)

在這裏插入圖片描述

字符串的基本操作2

複製指定長度字符串

在這裏插入圖片描述

字符串拼接

在這裏插入圖片描述

查找字符

在這裏插入圖片描述

查找字符串

在這裏插入圖片描述
在這裏插入圖片描述

字符串操作中的問題

在這裏插入圖片描述

4.4 C++中的新類型字符串-string

在這裏插入圖片描述


在這裏插入圖片描述
在這裏插入圖片描述

第七章 高級語法

從抽象到面向對象

面向對象

** C++使用struct、class來定義一個類
struct 的默認權限是public
class的默認權限是private
除此之外二者無差別

class Student
{
private:// 成員變量
	string name;
	double score;
public:   //成員函數
	double GetScore()
	{
	return score;
	}
};

在這裏插入圖片描述

面向對象的第一大誤區

在這裏插入圖片描述

抽象一具體類型

在這裏插入圖片描述
在這裏插入圖片描述

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