string s(n, 'c') — n 個字符 c;string s = string(10, 'c') 拷貝初始化while (getline(cin, line)) — 換行符被丟棄,不包含在 string 中s.empty()、s.size() 返回 string::size_type (無符號),避免與 int 混用s1 + s2、s1 += "literal" — 至少一邊是 stringfor (auto &c : s) c = toupper(c); — 引用修改原字符vector 纔是類型,vector> 需空格隔開雙尖括號 (C++11 前)vector v{1,2,3} ;vector v(10) — 10 個空串,非列表初始化auto it = v.begin(),*it 解引用;兩迭代器相減得 difference_type (帶符號)char a[] = "c++" 自動添加 \0;const char s[6] = "Daniel" 錯誤 — 缺終結符空間int *e = &arr[10] 指向尾後;for (int *p = arr; p != e; ++p) 遍歷ptrdiff_t (帶符號),定義於 <cstddef>p[-2] == arr[0];內置下標索引是帶符號類型strlen(ca) 依賴 \0,若字符數組無終結符 → 未定義行為string → const char*:s.c_str(),返回指向內部數組指針,生命週期綁定 stringstrcpy 拷貝一份int ia[3][4];
int (*p)[4] = ia; // 指向含 4 個 int 的數組指針
int *ip[4]; // 4 個 int* 的數組
int (*ip)[4]; // 指向 int[4] 的指針
代碼採用 #define NUM 切換題目,單文件包含所有答案:
for (auto *p = begin(arr); p != end(arr); ++p)vector vec(begin(arr), end(arr)) size() 返回無符號,for (int i = 0; i < v.size(); ++i) 隱式轉換可能預警at() 會拋出異常auto &x 修改元素,值傳遞只能讀取