C++筆記 第三十二課 初探C++標準庫---狄泰學院
阿新 • • 發佈:2018-11-15
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。
學習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名稱空間中