猎豹网校C++ Primer学习笔记
1、頭文件(15th課)
大型項目開發,要有很多頭文件。只能寫聲明,不能定義(類定義和常量定義可以)。
自己新建頭文件(類定義,外部變量聲明,函數聲明)。源文件包含對應的頭文件。
頭文件里寫類的聲明,源文件里寫類的定義,類的所有成員。
為避免預處理重復拷貝,頭文件保護符。防止多重包含。
2、命名空間(16th)
注意:頭文件里不能使用using聲明,用的話直接寫全。
?3、標準庫string類型(17th)字符容器
?
?using std::string;
si種初始化方法:()小括號是調用string對象的構造函數。
先初始化后再賦值,別這么寫。
?
?4、cin讀入特點,遇空格暫停
cin>>name,也可以忽略掉前面的格式,如換行、空格、Tab。
遇空格暫停,但空格還在輸入流里。下一次讀取時,再次對前段格式處理,忽略空格。
改為使用getline(cin,name);
//在VS中使用cin>>會閃退,原因未知,用getline就正常。
#include "stdafx.h" #include<iostream> #include<string> using namespace std; int main() {string name;cout <<"input sth" << endl;//cin>>name; getline(cin,name);cout << name << endl;getchar();return 0; }?需要在cin>>后面加上cin.ignore():
cin>>name;
cin.ignore();
5、循環讀入
循環讀入,一次讀入一行。
Win+z結束。輸入重定向<。
一次讀入一個單詞,循環讀入。
?6、string類型的操作。.size(),.empty()
7、字符串拼接操作,+號兩邊必須有一個是string類型的!
循環讀入并拼接:
8、string下標操作
?
循環操作string
、
使用C中的函數:但要加上頭文件#include<cctype>
實現忽略標點符號的輸出。
9、vector動態數組、類模板
?#include<vector>;using namespace std;
可以使用下標索引。.push_back()尾部加數據。
vector<int> ivec;
初始為空,不可以通過下標操作添加數據。(1.初始就給長度;2.先cin>>temp,后再push)
vector<int> ivec(10);
其下標索引類型與string相似,size_type。
vector<int>::size_type index=1;
?循環讀入數據進vector
計算首尾兩個數之和:
?
練習代碼,這種循環讀入形式需以ctr+Z結束。
#include "stdafx.h" #include<iostream> #include<string> #include<vector>using namespace std; int main() {cout<<"Input sth.:"<<endl;string str;vector<string> ivec;while(cin>>str){ivec.push_back(str);}//cin.ignore();//ivec.push_back(str);cout<<ivec[0]<<endl;getchar();return 0; }?
?循環讀入單詞并輸出:判斷長度要用.size()。
#include "stdafx.h" #include<iostream> #include<string> #include<vector>using namespace std; int main() {cout<<"Input sth.:"<<endl;string str;vector<string> ivec;while(cin>>str){ivec.push_back(str);} // for(vector<string>::size_type ix=0;ix!=sizeof(ivec);ix++)for(vector<string>::size_type ix=0;ix!=ivec.size();ix++){cout<<ivec[ix]<<endl;}cout<<"sizeof:"<<sizeof(ivec)<<endl;cout<<".size():"<<ivec.size()<<endl;//cin.ignore();//ivec.push_back(str); getchar();return 0; } ; View Code?10、iterator迭代器,不用下標遍歷
很多容器沒法用下標,但所有容器都有迭代器。
迭代器實際上是一個指針,通過解引用(*)修改數據和讀取數據。
常迭代器:
?11、四個二進制一組即16進制
四個一組后,權值向前遞次乘16。
十六進制數,可小寫可大寫。后面接H或前面加0x。
一個字節=8位二進制。
12、bitset<num>處理二進制
頭文件!
下標計數為倒序,從0開始。
初始化,可以使用字符串。
也可以使用鍵盤輸入來初始化:
.any();判斷是否有1
.none();判斷是否全是0
.count();計數1
.size()-.count();計數0
set(index)變成1,reset()把某位變成0,flip()翻轉。
二進制變成十進制:
?13、bitset應用-埃拉托斯特尼_篩法-尋找質數
先全初始化為1,然后從頭開始向后篩選,遇倍數則置0。.count()可以統計質數個數,貌似應該-1。
然后循環輸出即可:
?
改進1,只篩到根號即可。改進2,從平方處開始篩。
#include<cmath>
500萬都沒問題。
?
轉載于:https://www.cnblogs.com/wxl845235800/p/11396323.html
總結
以上是生活随笔為你收集整理的猎豹网校C++ Primer学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10无法执行vbs脚本
- 下一篇: buuctf————[NPUCTF202