1. 程式人生 > >C++筆記 第三十二課 初探C++標準庫---狄泰學院

C++筆記 第三十二課 初探C++標準庫---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。
學習C++編譯環境:Linux

第三十二課 初探C++標準庫

1.有趣的過載

操作符<<的原生意義是按位左移,例:1<<2;
其意義是將整數1按位左移2位,即:0000 0001 -> 0000 0100
過載左移操作符,將變數或常量左移到一個物件中!

32-1 過載左移操作符

#include<stdio.h>
//forth
const char endl = '\n';//Reference constant
class Console
{
public:
    
    //void operator << (int i)//second 
    
    Console& operator << (int i)//third
    {
	printf("%d",i);
        return *this;//third add
    }
    //second
    //void operator << (char c)  
    //third
    Console& operator << (char c)
   
    {
	printf("%c",c);
        return *this;//third add
    }
    Console& operator << (const char* s)
    {
	printf("%s",s);
        return *this;
    }
    Console& operator << (double d)
    {
	printf("%f",d);
        return *this;
    }
};
//Test cout;
Console cout;
int main()
{
    //first
    //cout.operator<<(1); 
    //second
    //cout << 1;//Same as the previous line 
    //cout << '\n';
    
    //cout << 1<<'\n';//third
    cout << 1<<endl;//forth
    cout << "D.T.Software"<<endl;
    double a = 0.1;
    double b = 0.2;
    cout << a+b << endl;
    return 0;
}
/*operation result
1
D.T.Software
0.300000
*/

2.C++標準庫

重複發明輪子並不是一件有創造性的事,站在巨人的肩膀上解決問題會更加有效!
C++標準庫標準庫並不是C++語言的一部分
C++標準庫是由類庫和函式庫組成的集合
C++標準庫中定義的類和物件都位於std名稱空間中
C++標準庫的標頭檔案都不帶.h字尾
C++標準庫涵蓋了C庫的功能
C++編譯環境的組成:
在這裡插入圖片描述
C++標準庫預定義了多數常用的資料結構
-bitset - set - cstdio stdio為C語言庫的標頭檔案,stdio.h為相容庫

  • deque - stack棧 - cstring
  • list列表 - vector - cstdlib
  • queue佇列 - map - cmath
    左邊兩列的標頭檔案列出了常用的資料結構類,右邊一列為子庫

32-2 C++標準庫的C庫相容

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
    printf("Hello world!\n");
    
    char* p = (char*)malloc(16);
    
    strcpy(p, "D.T.Software");
    
    double a = 3;
    double b = 4;
    double c = sqrt(a * a + b * b);
    
    printf("c = %f\n", c);
    
    free(p);
    
    return 0;
}

在這裡插入圖片描述

32-3 C++中的輸入輸出—里程碑式的程式碼

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    cout << "Hello world!" << endl; //引子,之後的輸入輸出都基於標準庫
    
    double a = 0;
    double b = 0;
    
    cout << "Input a: ";
    cin >> a;
    
    cout << "Input b: ";
    cin >> b;
    
    double c = sqrt(a * a + b * b);
    
    cout << "c = " << c << endl;
    
    return 0;
}

小結
C++標準庫是由類庫和函式庫組成的集合
C++標準庫包含經典演算法和資料結構的實現
C++標準庫涵蓋了C庫的功能
C++標準庫位於std名稱空間中