變數可以幫助我們儲存資料,但如果今天有若干筆資料要輸入,我們勢必要宣告一堆變數。
這樣寫起來太麻煩也太累人了
於是程式設計師們開發了一個好用的工具,叫做「陣列Array」
如果 int、float、char......
是宣告一個又一個的盒子
那麼 Array 就是宣告 N 個連貫的盒子
type
為型別arrayName
為陣列名稱,與其它型別宣告時的命名規則相同arraySize
為陣列長度,只能是非負整數或是非負整數變數陣列的宣告範例如下:
範例宣告了一個名為 arr
的整數型別陣列,有 1000 個位置可以放整數
範例輸出 arr[100]
,而它的 100 便稱作陣列的索引值
陣列宣告時為陣列長度,而使用時為陣列索引值
有 1000 個位置那索引值可以放 1~1000 囉?
不,陣列永遠只能從 0 開始 (Re:從零開始的異世界生活)
這個情況的索引值範圍是 0~999
也就是 陣列長度為 N
,其索引值的範圍為 [0]~[N-1]
未初始化的陣列,其值將會是亂數,不可用
與其他型別變數操作相仿
不過可以指定單個陣列元素輸入和輸出
但太多筆數據時,使用陣列便顯得麻煩
為了節省時間,陣列通常與迴圈搭配使用
type
為型別arrayName
為陣列名稱,與其它型別宣告時的命名規則相同arraySize
為陣列長度,只能是非負整數或是非負整數變數以下以二維陣列作為範例
語法錯誤但 IDE(整合開發環境) 會接受這種語法,使用上問題很大
尤其是區域記憶體溢出的問題,溢出時會使程式數值錯誤
所以務必用全域宣告陣列
如果邊界範圍為 N
那麼 陣列的長度建議宣告為 N+5
這是為了 避免陣列溢位
補充:全域宣告的陣列預設值皆為 0
char
與 string
char
char
的陣列char
就是字元型別,一個字元變數一次可以讀取一個字元
而如果要讀取一句話,或是很多字元的時候
就要用 char
宣告一個 array
char
的陣列char
的陣列宣告範例如下:
char
陣列string
string
的用意不是每句話長度都相同,這樣在宣告上十分不易
於是有一個不需要考慮字元陣列長度的型別,稱作 string
string
就是字元陣列,但我們不用知道有多少個字元
string
string
是一種型別
string
宣告範例如下:
string
補充:string str ; 預設狀態下即為空字串(NULL)
string
陣列string
的陣列宣告範例如下:
string
陣列string
陣列使用字串陣列時,只需要在最後加上 [index]
即可存取字串中的元素
C++自帶的用法與函數:
需導入 <string> 函式庫才可使用的函數:
在輸入輸出時,題目都會要求輸出一組結果
像是輸入一個數字,要你判斷他是不是質數,因為只有一個數字,所以很簡單
但如果今天有好幾個數字要你判斷,那你勢必要對每個數字進行判斷
這也會造成程式的執行效率低下
倘若今天用建表的方式,只要執行一次就不用重複執行
而建表的概念就是實現輸入一組 index
,只用 arr[index]
就能得到答案
b004: 一個都不能少
http://www.tcgs.tc.edu.tw:1218/ShowProblem?problemid=b004
在使用陣列時,如果遇到陣列長度為 length
的 arr[i+N]
即便 i
的值有被嚴格限制在陣列範圍
加上常數 N
後卻很可能因此超出陣列範圍,也就是陣列的邊界
因此,要更改最大索引值為 length-N-1
以避免超出邊界
允許邊界外賦值延長陣列長度
但不可未延長陣列長度就進行操作,會有溢位問題
只有進行初始化時才可以不放陣列長度
陣列的輸入輸出動不動就是幾千幾萬筆的
在C++,這樣的輸入輸出會造成程式效率低下
於是我們使用 IO優化 :
新竹實驗中學C++程式語言教學講義
https://hackmd.io/@qR5cY2d3Ql2AdYtLfHFxVg/B18yT_i5Z?type=view
語言技術:C++ Gossip
https://openhome.cc/Gossip/CppGossip/index.html
【c++標準函式庫(STL)筆記】string介紹 (含常見功能: 數字、字串互轉,字串切割,找子字串)
https://ithelp.ithome.com.tw/articles/10231604?sc=rss.qu
C++陣列初始化為0
https://www.itread01.com/content/1546996331.html
如何使用陣列 (Array)
https://michaelchen.tech/c-programming/array/
Array declaration
https://en.cppreference.com/w/c/language/array
std::array<T,N>::operator[]
https://en.cppreference.com/w/cpp/container/array/operator_at
std::array
https://en.cppreference.com/w/cpp/container/array
C++教學
http://tw.gitbook.net/cplusplus/index.html
C++與演算法
https://www.csie.ntu.edu.tw/~b98902112/cpp_and_algo/index.html
C語言字元陣列的定義與初始化
https://www.itread01.com/content/1550203580.html
陣列宣告和賦值總結
https://www.itread01.com/content/1546701490.html
string 如何初始化为空?
https://bbs.csdn.net/topics/390692419
string初始化的几种方法
https://blog.csdn.net/allovexuwenqiang/article/details/4277555
C++ string(初始化和部分函数的使用)
https://blog.csdn.net/qq_34637408/article/details/71584616
string::insert
http://www.cplusplus.com/reference/string/string/insert/
C++的輸出入cin/cout和scanf/printf誰比較快?
https://chino.taipei/note-2016-0311C-的輸出入cin-cout和scanf-printf誰比較快?/