亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

瞎學筆記之數組,vector,string in C++

2019-11-06 08:10:57
字體:
來源:轉載
供稿:網友

前言:初學C++,就覺得C略顯原始,最近看《C++ PRimer》了解了一點類型,在這里做個筆記

數組vector定義和初始化運算數組與vectorstring定義初始化運算處理字符C風格字符串與string迭代器使用迭代器迭代器類型運算其他

數組

C++中的數組與C中的數組區別不大,數組名字代表了首元素的地址,聲明一個數組的維度使用常量表達式:int array[10]; 也可以int array[] = {1, 2, 3}; 若是沒有顯示初始化,則會被初始化為默認值。 訪問的時候有兩種方式:int a = array[1];,也可以int a = *(array + 1); 這與C中是一樣的,無需多言。 C++11中引入了兩個函數begin()end(),定義于<iterator> 頭文件中,以數組名為參數時分別返回該數組的首元素指針和尾元素下一個位置的指針,通過這兩個指針我們便可以通過for遍歷每個元素,當然,也可以使用for (auto &i : array) 遍歷。 值得一提的是,數組作為對象也存在引用與指針,如:int (*arr1)[10] = &array;int (&arr2)[10] = array; 分別代表指向array的指針和對array的引用。 由于數組的大小固定,所以比之vector靈活性更差,而數組類型的C字符串也不如string方便。至于多維數組,其性質與C中并無明顯差別,也就不提。


vector

標準庫類型vector表示對象的集合,與數組相似,但不限長度,被稱為容器,是一個模板,而要使用vector,必須包含<vector> 頭文件,且定義于命名空間std中 vector能容納絕大多數類型的對象為元素(不包括不是對象的引用),同時作為一個對象,vector同樣能作為對象被容納。

定義和初始化

vector<int> v1; //默認初始化vector<int> v2(v1); //v2包含v1元素的副本vector<int> v3 = v1;vector<int> v4(n, val)//包含n個重復的valvector<int> v5(n)//包含n個默認初始化的元素vector<int> v6{1, 2, 3};//列表初始化vector<int> v7 = {1, 2, 3};

以上為vector的初始化方法,不同于數組,vector可以使用=直接將一個同類型的vector賦值給另一個

運算

vector支持不同的操作,在此列出部分:

v.empty() //若v為空返回真v.size() //返回元素個數v.push_back(t) //向尾段添加一個值為t的元素 //而不能通過下標直接添加v[n] //返回第n個元素的引用v1 = v2v1 = {a, b, c}v1 == v2 //v1和v2相等當且僅當元素數量相同且 //對應位置元素相同v1 != v2v1 < v2 //以字典順序進行比較,也有<=,>,>=

三個函數為vector的成員函數,其中v.size()返回由vector定義的size_type 類型 與數組相同,可以使用下標訪問vector中的元素,且只能訪問已存在的元素

數組與vector

C++不允許用vector為數組賦初值,但卻允許用數組為vector賦初值,只需指明首元素地址和尾后地址即可

int arr[] = {1, 2, 3}vector<int> ivec(begin(arr), end(arr));

string

標準庫類型string表示可變長的字符序列,與vector類似,擁有自己的頭文件<string> 且定義于命名空間std中

定義初始化

string s1;string s2(s1);string s3 = s1;string s4("value");//直接初始化string s5 = "value";//拷貝初始化string s6(n, 'c');

與vector類似的定義初始化方法,這里不做注釋

運算

os << s //將s寫到輸出流os中,返回osis >> s //從is中讀取字符串賦給s,以空白分隔,返回isgetline(is, s) //從is中讀取一行賦給s,返回iss.empty() s.size() //返回字符個數s[n] //返回第n個字符的引用s1 + s2 //返回s1和s2連接后的結果s1 = s2 s1 == s2 //對大小寫敏感的相等性判斷s1 != s2 s1 > s2 //字典順序比較,另有>,>=,<

當從輸入流中讀寫s時,會自動忽略開頭的空白,而在下一處空白時結束,而若要讀取空白,可以使用getline() 讀取一整行 與vector類似,s.size() 返回string中定義的類型size_type 相加時,只需保證+兩邊至少有一個string類型即可,值得一提的是,字符串字面值并不屬于string

處理字符

<cctype> 頭文件中包含了一組標準庫函數處理字符(對應C中的<ctype.h> 頭文件),此處不列出 在處理每個字符時,同樣可以使用范圍for語句進行遍歷 而使用下標訪問時,必須注意索引范圍在區間[0,s.size() - 1]

C風格字符串與string

C++支持C風格字符串,<cstring><string.h> 的C++語言版本 C++允許使用以空字符結束的字符數組初始化string對象或為其賦值,而如果要把string類型的對象賦給C字符串,則需要使用string成員函數c_str(),返回指向空字符結束的字符數組的指針,內容與string一樣,且類型為const char* 但實際使用過程中,string無疑更方便


迭代器

迭代器是一種比下標訪問更通用的機制,所有標準庫容器都支持迭代器

使用迭代器

有迭代器的類型同時擁有返回迭代器的成員,比如begin()end(),分別返回指向首元素的迭代器和尾后迭代器 迭代器支持運算,如

*iter //返回所指元素的引用iter -> mem //解引用iter并獲取mem成員,相當于 (*iter).mem++iter--iteriter1 == iter2iter1 != iter2

因為end()返回的迭代器不指示某個元素,所以不能遞增和解引用

迭代器類型

標準庫類型使用iteratorconst_iterator表示迭代器的類型,可以使用autodecltype忽略類型地聲明一個迭代器 begin()end()返回類型由對象決定是否為常量,C++11引入了cbegin()cend()兩種必然返回const_iterator 的函數

運算

迭代器同樣可以使用+,-,+=,-=等運算符,也可以相互根據指向位置前后進行比較,相減則就可以得到兩個同一容器迭代器之間的距離,距離返回difference_type 類型的帶符號整數

其他

注意,當容器容量改變時,原有迭代器都會失效,如向vector中添加元素。 個人認為,若容器支持下標運算,則下標運算會更方便,但迭代器無疑更普遍,深入學習后或許便能發現其比下標更優的地方


以上,便是本人這學期初的瞎學成果,課上還學習了class,此處不作詳細記錄。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情久久久| 国产精品美女www爽爽爽视频| 国产午夜精品久久久| 国产a∨精品一区二区三区不卡| 日韩精品中文字幕久久臀| 亚洲精品日产aⅴ| 久久影院免费观看| 国产日韩欧美在线视频观看| 亚洲黄色有码视频| 国产黑人绿帽在线第一区| 亚洲iv一区二区三区| 国产精品99免视看9| 亚洲欧美在线免费观看| 亚洲国产成人在线播放| 亚洲高清久久久久久| 欧美精品成人在线| y97精品国产97久久久久久| 久久av在线看| 国产综合视频在线观看| 国产精品h片在线播放| 91久久综合亚洲鲁鲁五月天| 2019中文字幕在线免费观看| 国模极品一区二区三区| 中文字幕在线国产精品| 亚洲专区中文字幕| 亚洲激情国产精品| 欧美一二三视频| 久久中文精品视频| 成人日韩av在线| 日韩黄在线观看| 欧美激情精品久久久久久大尺度| 欧美国产日韩中文字幕在线| 国产精品第1页| 久久视频在线播放| 日韩电视剧在线观看免费网站| 欧洲s码亚洲m码精品一区| 2020久久国产精品| 97精品视频在线观看| 久久久久久91| 91免费看片网站| 欧美成人性生活| 欧美成人精品在线播放| 亚洲美女精品成人在线视频| 亚洲成色www8888| 久久久久99精品久久久久| 日韩美女在线播放| 国内精品久久影院| 色噜噜国产精品视频一区二区| 亚洲国产成人精品女人久久久| 色老头一区二区三区| 国产亚洲精品久久久优势| 国产综合福利在线| 国产日本欧美一区二区三区在线| 日韩成人激情影院| 国产成人综合av| 一本一本久久a久久精品牛牛影视| 国产91色在线| 日韩av有码在线| 一本一道久久a久久精品逆3p| 亚洲欧美日韩国产中文| 国产精品夜间视频香蕉| 日韩黄色在线免费观看| 精品国产一区二区三区久久久| 高清欧美一区二区三区| 精品福利在线视频| 亚洲夜晚福利在线观看| 黑人巨大精品欧美一区二区三区| 久久久久久久久亚洲| 久久国产精品影视| 久久精品亚洲一区| 97色伦亚洲国产| 国产精品www网站| 久久全国免费视频| 国产精品成人免费电影| 国产脚交av在线一区二区| 最新国产精品亚洲| 亚洲精品久久久久久久久久久久| 国产精品高清免费在线观看| 久久91精品国产91久久久| 国产精品高潮视频| 97视频在线观看视频免费视频| 国产美女精品视频| 91精品国产成人www| 亚洲一区二区三区香蕉| 久久精品精品电影网| 欧美日韩国产精品一区二区三区四区| 亚洲欧美www| 欧美色另类天堂2015| 成人性生交大片免费看小说| 国产精品96久久久久久| 久久久av网站| 日韩欧美在线第一页| 日韩av男人的天堂| 亚洲片国产一区一级在线观看| 亚洲视频专区在线| 亚洲国产精品嫩草影院久久| 欧美日韩国内自拍| 中文字幕亚洲一区| 国产精品日韩欧美大师| 日韩综合中文字幕| 欧美精品成人91久久久久久久| 亚洲人成电影在线| 亚洲奶大毛多的老太婆| 欧美精品videos另类日本| 91免费欧美精品| 成人黄色片网站| 色偷偷偷亚洲综合网另类| 国产精品99久久久久久白浆小说| 亚洲天堂av网| 97视频免费在线看| 欧美高清一级大片| 国产色综合天天综合网| 久久人91精品久久久久久不卡| 久久九九有精品国产23| 国产精品视频午夜| 久久久av免费| 欧美日韩另类字幕中文| 久久综合久久八八| 久热爱精品视频线路一| 国产91精品久久久| 亚洲无av在线中文字幕| 亚洲精品国产精品久久清纯直播| 久久深夜福利免费观看| 疯狂做受xxxx高潮欧美日本| 日韩免费黄色av| 日韩久久精品成人| 国产日韩av在线播放| 日韩av最新在线| 91超碰中文字幕久久精品| 91中文在线观看| 最近2019中文字幕一页二页| 国产精品免费一区| 日韩中文字幕网址| 精品久久在线播放| 成人乱色短篇合集| 日本欧美一二三区| 色999日韩欧美国产| 精品久久久国产精品999| 人人爽久久涩噜噜噜网站| 久久视频免费在线播放| 亚洲色图狂野欧美| 中文字幕欧美日韩| www.久久久久久.com| 91在线|亚洲| 成人免费午夜电影| 国产不卡一区二区在线播放| 亚洲一区二区三区在线视频| 久久精品国产一区二区电影| 久久久久久香蕉网| 国产精品亚洲欧美导航| 亚洲人在线视频| 亚洲偷熟乱区亚洲香蕉av| 欧美日韩午夜激情| 国产xxx69麻豆国语对白| 热久久美女精品天天吊色| 亚洲免费福利视频| 久久亚洲国产精品成人av秋霞| 亚洲人永久免费| 欧美黑人国产人伦爽爽爽| 亚洲欧美成人精品| 亚洲国产精品va在看黑人| 日韩av电影在线网| 亚洲色图25p| 欧美国产精品日韩|