編號說明1
using 宣告
標頭檔案中一般不應該使用using宣告
2標準庫型別string
#include
using std::string;
初始化方式:
string s1;
string s2(s1);
string s2 = s1;
string s3("value");
string s3 = "value";
string s4(n, 'c');
直接初始化
拷貝初始化 =
string物件操作:
os << s
is >> s
getline(is, s)
s.empty()
s.size()
s1 + s2
s1 = s2
s1 == s2
s1 != s2
<, <=, >, >=
string::size_type型別
auto len = s.size();
在索引中也可以使用
cctype標頭檔案函式:
isalnum(c)
isalpha(c)
iscntrl(c)
isdigit(c)
isgraph(c)
islower(c)
isprint(c)
ispunct(c)
isspace(c)
isupper(c)
isxdigit(c)
tolower(c)
toupper(c)
for (declaration : expression)
statement
for (auto c : s)
for (auto &c : s)
string可以使用下標運算子
3標準庫型別 vector
容器container
#include
using std::vector;
c++有類模板和函式模板,vector屬於類模板
編譯器根據模板建立類或者函式的過程稱為例項化instantiation
初始化:
vectorv1
vectorv2(v1)
vectorv2 = v1
vectorv3(n, val)
vectorv4(n)
vectorv5
vectorv5 =
預設有值初始化,根據型別決定
新增元素
vec.push_back()
範圍for迴圈 (不是傳統for迴圈) 不能向vector物件新增元素
4迭代器
end()指向尾元素的下一位置
運算子:
*iter
iter->mem
++iter
--iter
iter1 == iter2
iter1 != iter2
迭代器型別:
iterator
const_iterator
vectorv;
const vectorcv;
auto it1 = v.begin();
auto it2 = cv.begin();
箭頭運算子 ->
將解引用和成員訪問結合
it->mem 等價於 (*it).mem
push_back會使vector物件的迭代器失效
運算:iter + n
iter - n
iter += n
iter -= n
iter1 - iter2
>, <, <=, >=
距離型別名:
difference_type
auto mid = vec.begin() + vec.size() / 2;
二分查詢5陣列
存放型別相同的元素, vector也是
使用陣列時需要確定元素數量,vector可以不確定情況下使用
定義陣列時必須指定型別,而不能用auto
字元陣列需要留出空間存放結束符
複雜的陣列定義:
int*
ptrs[10
];// ptrs
是含有10
個整型指標的陣列
// int &refs[10] = /* ? */; // error, 不存在引用的陣列
int(*parray
)[10
] = &
arr;
// parray
指向乙個含有
10個整數的陣列
int(&arrref
)[10
] =
arr;
// arrref
引用乙個含有
10個整型的陣列
型別修飾符從右向左依次繫結
陣列元素訪問:
索引,陣列下標size_t型別,size_t定義於cstddef標頭檔案中(stddef.h的c++對應版本)
某些情況下,陣列的操作實際上是指標的操作
指標也是迭代器
++p可以用陣列索引乙個不存在的元素(尾指標)進行初始化
int *e = &arr[10]; // 指向arr尾元素的下一位置的指標
也可以使用begin(), end() 定義位於iterator標頭檔案
int *beg = begin(ia);
int *last = end(ia);
指標運算結果
auto n = end(arr) - begin(arr); // type: ptrdiff_t
兩個指標指向同乙個陣列時,可以利用關係運算子比較,否則,不能
6c風格字串
盡量少使用
c標準庫 string函式 cstring標頭檔案
strlen(p)
strcmp(p1, p2) // == 0 > 正數 < 負數
strcat(p1, p2)
strcpy(p1, p2)
此類函式使用時,需保證陣列以空字元結尾
可以使用以空字元結尾的字元陣列來初始化string物件,或者為string物件賦值,反之不行
但是可以使用string的c_str成員函式對字元陣列賦值
const char *str = s.c_str(); // char * 不可以,必須是const char *
7陣列初始化vector
8多維陣列
int ia[3][4] = ,
,}; // 裡面的花括號非必須
int ib[3][4] = , , }; // 只初始化每行第乙個元素
int ic[3][4] = ; // 只初始化第一行
int (&row)[4] = ia[1]; // row繫結至ia的第二行
// 迴圈遍歷
for (auto &row : ia)
}int (*pa)[4] = ia;
cout << *pa[1] << endl; // ia[1]第乙個元素
cout << (*pa)[1] << endl; // ia[0]第2個元素
//cout << (*pa)[1][1] <<" " << (*pa)[2][1] << endl; // error
// 多維陣列遍歷新用法
for (auto pb = ia; pb != ia + 3; pb++)
cout << endl;
}// 方法類似上面
for (auto pc = begin(ia); pc != end(ia); ++pc)
cout << endl;}9
型別別名簡化指標
using int_array int[4];
typedef int int_array[4];
10define bias origin
typedef origin bias;
Cpp Primer 學習筆記 第1章
編號說明1 流iostream istream ostream std cin std cout 2控制流 while forif 3輸入數量不定 while std cin x 4std cin obj 需要根據obj資料結構實現資料輸入 比如,obj屬於結構體,則 0 1 2 3 12.3 為一...
java學習筆記 第3天
sys as sysdba sys使用者可以建立其他的使用者 create user user01 identified by u01 建立乙個使用者,口令為u01 alter user user01 identified by us01 更改使用者的口令為us01 password 只有擁有dba...
Python學習筆記 第3天
1.字典的定義 字典是一系列鍵 值對。每個鍵都與乙個值相關聯,可以通過使用鍵來訪問與之相關聯的值。字典可以理解為列表的公升級版 列表bicycles trek cannondale specialize 字典 aline 0 如果需要修改 trek 則需要先找到它的下標,而字典是根據鍵名找,下標沒有...