C primer第三章 標準庫型別

2021-05-28 09:37:11 字數 2998 閱讀 4579

一、標準庫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....