1.寫出string型別的五種初始化方法
string str;
string str("value");
string str(str2);
string str(n,'c');
string str(iterator1,iterator2);
2.如何對string物件進行讀寫操作,如何讀入未知數目的string物件?
#include
#include
using namespace std;
string s;
cin>>s; //讀到空格為止
cout<
--------------------------------
string s;
while(cin>>s)...
3.如何讀取整行文字?string物件中是否具有換行符?
string line;
while (getline(cin, line)) //取cin的一行給line
cout << line << endl;
4. string物件的8個基本操作是什麼?如何書寫?
s.empty()
s.size()
s[n]
s1 + s2
s1 = s2
v1 == v2
!=, <, <=, >, >=
5. size操作結果的型別是什麼?
字串中字元的個數
6. 字元處理的標頭檔案是什麼?有哪13個函式?
各種字元操作函式,適用於 string 物件的字元(或其他任何 char 值)。這些函式都在 cctype 標頭檔案中定義。13個函式如下:
isalnum(c) 如果 c 是字母或數字,則為 true。
isalpha(c) 如果 c 是字母,則為 true。
iscntrl(c) 如果 c 是控制字元,則為 true
isdigit(c) 如果 c 是數字,則為 true。
isgraph(c) 如果 c 不是空格,但可列印,則為 true。
islower(c) 如果 c 是小寫字母,則為 true。
isprint(c) 如果 c 是可列印的字元,則為 true。
ispunct(c) 如果 c 是標點符號,則 true。
isspace(c) 如果 c 是空白字元,則為 true。
isupper(c) 如果 c 是大寫字母,則 true。
isxdigit(c) 如果是 c 十六進製制數,則為 true。
tolower(c) 如果 c 大寫字母,返回其小寫字母形式,否則直接返回 c。
toupper(c) 如果 c 是小寫字母,則返回其大寫字母形式,否則直接返回 c。
7. string型別的標頭檔案是什麼?
string.h
8. vector型別的標頭檔案是什麼?
vector.h
9. vector的本質是什麼?
本質是類模板
10. 寫出vector的四個初始化方法。
vectorv1; vector 儲存型別為 t 物件。預設建構函式 v1 為空。
vectorv2(v1); v2 是 v1 的乙個副本。
vectorv3(n, i); v3 包含 n 個值為 i 的元素。
vectorv4(n); v4 含有值初始化的元素的 n 個副本。
11.vector物件的7個基本操作是什麼?如何書寫?
v.empty() 如果 v 為空,則返回 true,否則返回 false。
v.size() 返回 v 中元素的個數。v.empty() 如果 v 為空,則返回 true,否則返回 false。
v.push_back(t) 在 v 的末尾增加乙個值為 t 的元素。
v[n] 返回 v 中位置為 n 的元素。
v1 = v2 把 v1 的元素替換為 v2 中元素的副本。
v1 == v2 如果 v1 與 v2 相等,則返回 true。
!=, <, <=, >, >= 保持這些操作符慣有的含義。
12. 編寫for迴圈將vector iv(10)中所有元素設為10;
for (vector::size_type i=0;i!=iv.size();i++)
13. vector下標操作是否新增元素?
不是,下表操作必須是訪問已經存在的元素,在vector中新增元素通常用push_back()
14.什麼是迭代器?訪問vector中元素的兩種方法是什麼?
迭代器是一種檢查容器內元素並遍歷元素的資料型別。
通過下標訪問
for (vector::size_type i=0;i!=iv.size();i++) iv[i]=0;
通過迭代器訪問
for (vector::size_type ix = 0; ix != ivec.size(); ++ix) ivec[ix] = 0;
15. 下標操作和迭代器操作哪乙個更通用?
迭代器操作更通用。
16. 容器的哪兩個函式可以返回迭代器物件?
begin()返回指向容器首元素的迭代器;end()返回指向容器末元素的下乙個位置的元素的迭代器,及超出末端迭代器。
17. 用迭代器的方法操作vectoriv(10)是每個元素為10;
for (vector::size_type ix = 0; ix != ivec.size(); ++ix) ivec[ix] =1 0;
18. 容器中的唯讀迭代器型別如何使用?與constiterator有何區別?
vector::const_iterator iter=iv.begin();//只能用於讀取容器內元素,不能改變其值
const vector::iterator iter=iv.begin();//這個迭代器只能指向這乙個位置,不能夠再指向別的位置了,即迭代器本身的值是const,不能修改。
19. iterator的算術運算有哪兩種?
iter + n
iter - n
可以對迭代器物件加上或減去乙個整形值。這樣做將產生乙個新的迭代器,其位置在 iter 所指元素之前(加)或之後(減) n 個元素的位置。加或減之後的結果必須指向 iter 所指 vector 中的某個元素,或者是 vector 末端的後乙個元素。加上或減去的值的型別應該是 vector 的 size_type 或 difference_type 型別。
iter1 - iter2
該表示式用來計算兩個迭代器物件的距離,該距離是名為 difference_type 的 signed 型別 size_type 的值,這裡的 difference_type 是 signed 型別,因為減法運算可能產生負數的結果。該型別可以保證足夠大以儲存任何兩個迭代器物件間的距離。iter1 與 iter2 兩者必須都指向同一 vector 中的元素,或者指向 vector 末端之後的下乙個元素。
20. 寫出bitset的四個初始化方法;
bitsetb; b 有 n 位,每位都 0
bitsetb(u); b 是 unsigned long 型 u 的乙個副本
bitsetb(s); b 是 string 物件 s 中含有的位串的副本
bitsetb(s, pos, n); b 是 s 中從位置 pos 開始的n 個位的副本。
21. bitset物件的14個基本操作是什麼?
b.any() b 中是否存在置為 1 的二進位制位?
b.none() b中不存在置為 1 的二進位制位嗎?
b.count() b中置為 1 的二進位制位的個數
b.size() b中二進位制位的個數
b[pos] 訪問 b 中在 pos 處二進位制位
b.test(pos) b 中在 pos 處的二進位制位置為 1 麼?
b.set() 把 b 中所有二進位制位都置為 1
b.set(pos) 把 b 中在 pos 處的二進位制位置為 1
b.reset() 把 b 中所有二進位制位都置為 0
b.reset(pos) 把 b 中在 pos 處的二進位制位置為 0
b.flip() 把 b 中所有二進位制位逐位取反
b.flip(pos) 把 b 中在 pos 處的二進位制位取反
b.to_ulong() 用 b 中同樣的二進位制位返回乙個 unsigned long 值
os << b 把 b 中的位集輸出到 os 流
第3章 標準庫型別 3
3.3 標準庫vector型別 vector是同一種型別的物件的集合,每個物件都有乙個對應的資料索引值。和string物件一樣,標準庫將負責管理與儲存元素相關的記憶體。我們把vector稱作容器,是因為它可以包含其他物件。乙個容器中的所有物件都必須是同一種型別的。vector是乙個類模板 class...
第3章 標準庫型別 1
3.1 命名空間的using宣告 使用using宣告可以在不需要加字首namespace name 的情況下訪問命名空間中的名字。一旦使用了using宣告,我們就可以直接引用名字,而不需要再引用該名字的命名空間。include stdafx.h include using std cout usin...
第3章 標準庫型別 2
3.2.3 string物件的操作 1.string的size和empty操作 string物件的長度指的是string物件中字元的個數,可以通過size操作獲取。string str anders cout str.size endl empty 成員函式將返回bool值,如果string物件為空...