一、標準庫string型別:#include
1、string物件的定義和初始化
表3.1幾種初始化string物件的方式
string s1;
預設建構函式,s1為空串
string s2(s1);
將s2初始化為s1的乙個副本
string s3("value");
將s3初始化為乙個字串字面值的副本
string s4(n,'c');
將s4初始化為字元'c『的n個副本
2、string物件的操作
s.empty()
如果s為空串,則返回true,否則返回false
s,size()
返回s中字元的個數
s[n]
返回s中位置為n的字元,位置從0開始計數
s1+s2
把s1和s2連線成乙個新的字串,返回新生成的字串
s1=s2
把s1內容替換為s2的副本
v1==v2
比較v1和v2的內容,相等則返回true,否則返回false
!= < <= > >=
保持這些操作符慣有的含義
注意:size() 成員函式返回的是string::size_type型別,它定義為與unsigned型(unsigned int 和 unsigned long )具有相同的含義。
二、標準庫 vector 型別 #include
1、vector 物件的定義和初始化
定義: vector 是同一種型別的物件的集合,每個物件都有乙個對應的整數索引值。我們把vector 稱為容器,它可以包含其他物件,乙個容器中的所有物件必須是同一種型別。
表3.2幾種建構函式
vectorv1;
vector 儲存型別為t的物件。預設建構函式,v1為空
vectorv2(v1);
v2是v1的乙個副本
vectorv3(n, i);
v3包含n個值為i的元素
vectorv4(n);
v4含有值初始化的元素的n個副本
vector物件的重要屬性就是在於可以執行時高效的新增元素。
2、vector 物件的操作
v.empty();
如果v為空,則返回true,否則返回false
v.size();
返回v中元素的個數
v.push_back(t);
在v的末尾增加乙個值為 t 的元素
v[n];
返回v中位置為n的元素
v1=v2;
把v1的元素替換為v2中元素的副本
v1==v2;
如果v1與v2相等,則返回true
!= < <= > >=
保持這些操作符慣有的含義
注意:必須是已存在的元素才能用下標操作符進行索引。通過下標操作進行賦值時,不會新增任何元素。
三、迭代器(iterator)
迭代器是一種檢查容器內元素並遍歷元素的資料型別。
1、容器的iterator型別
每種容器型別都定義了自己的迭代器型別。
vector::iterator iter;
iter的資料型別是由vector定義的iterator型別。
2、begin和end操作
begin函式:返回的迭代器指向第乙個元素。
例如:vector::iterator iter=ivec.begin() ; iter即指該元素為ivec[0] ;
3、vector迭代器的自增和解引用運算
解引用操作符(*操作符)
*iter=0; 解引用操作符返回迭代器當前所指向的元素。
假設iter指向vector物件ivec的第乙個元素,那麼*iter和ivec[0]就是指向同乙個元素。上面這個語句就是把這個元素的值賦為0。
注意:由end操作返回的迭代器不指向任何元素,因此不能對它進行解引用或自增操作。
4、const_iterator
該型別只能用於讀取容器內元素,但不能改變其值。
四、標準庫bitset型別
1、bitset物件的定義和初始化
要明確bitset含有多少位,須在尖括號內給出它的長度值。
例如:bitset<32> bitvec ; //32bits,all zero 給出的長度值必須是常量表示式。
表3.3初始化bitset物件的方法
bitsetb;
b有n位,每位都為0
bitsetb(u);
b是unsigned long型u的乙個副本
bitsetb(s);
b是string物件s中含有的位串的副本
bitsetb(s, pos, n);
b是s中從位置pos開始的n個位的副本
注意:當用string物件初始化bitset物件時,從string物件讀入位集的順序是從右到左。
2、bitset物件上的操作
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中的位集輸出到os流
C Primer 第三章 標準庫型別
c 定義了兩種最重要的標準庫型別 string 和 vector,它們分別定義了大小可變的字串和標準庫。其中,string型別支援長度可變的字串,vector可用於儲存一組指定類 型的物件。3.2標準庫string 型別 string型別支援長度可變的字串,使用者程式要使用string型別物件,必須...
《C Primer》 第三章 標準庫型別
除低階資料型別,c 標準庫還定義了許多更高階的抽象資料型別 abstract data type 比如string,vector,bitset。命名空間的using宣告 使用using宣告可以在不需要加字首namespace name 的情況下訪問命名空間中的名字。using namespace n...
C Primer 第三章 標準庫型別
string 物件看成是乙個word,這是這個word中可以是ascii的所有字元。3.2.2 string 物件的讀寫 1.讀入未知數目的string物件 int main string word while cin word 返回讀入的資料流 cout word endl return 0 2....