《C 高階教程》學習筆記14

2021-06-27 20:16:09 字數 3307 閱讀 8322

第二十一,二十二天

(昨天咖啡喝濃了頭居然發熱了)

(今天繼續學習)

9.1.3 格式字串

例:double d=13.45;

int i=45;

console.writeline(" ",d,i);

常見格式說明符

c     數字型別    特點地區的貨幣值

d     只用於整數型別    一般的整數

e     數字型別    科學計數法

f     數字型別     小數點後的位數固定

g     數字型別

9.2正規表示式略

第十章:集合

集合的介面:

ienumerable如果foreach語句用於集合,就需要ienumerable介面。這個介面定義了方法getenumerable(),它返回了乙個實現了ienumerable介面的列舉

icollectionicollection介面由泛型集合類實現,使用這個介面可以獲得集合中的元素個數(count屬性),把集合複製到陣列中(copyto()方法),還可以從集合中新增和刪除元素(add(),remove(),clear())

ilistilist介面用於可通過位置訪問其中的元素列表,這個介面定義了乙個索引器,可以在集合的指定位置插入或刪除某些項(insert()和removeat()方法)。ilist介面派生自icollection介面

isetiset介面由集實現,集允許合併不同的集,獲得兩個集的交集,檢查兩個集是否重疊。iset派生自icollection

idirection該介面由包含鍵和值的泛型集合類實現。使用這個介面可以訪問所有的鍵和值,使用鍵型別的索引器可以訪問某些項,還可以新增或刪除某些項

ilookup(tkey,tvalue) 該介面類似於idirection介面,實現該介面的集合有鍵和值,且可以通過乙個鍵包含多個值。

icomparer介面icomparer由比較器實現,通過compare()方法給集合中的元素排序。

iequalitycomparer介面iequalitycomparer由乙個比較器實現,該比較器可用於字典中的鍵。使用這個介面,可以對物件進行相等性比較。從.net4開始,這個介面也由陣列和元組實現。

iproducerconsumercollection該介面是.net4中新增的,它支援新的執行緒安全的集合類。

10.3列表

動態列表提供了泛型類list。這個類實現了ilist,icollection,ienumerable,ilist,icollection,ienumerable

10.3.1 建立列表

var intlist=new list();

var racers=new list(); //racer是乙個類

listintlist2=new list(10); //容量為10,不足翻

使用capacity屬性可以獲取和設定集合的容量

intlist.capacity=20;

集合中的元素個數可以用count屬性讀取。

不再新增時,用trimexcess()方法,去除不需要的容量。

1 集合初始值設定項

var intlist=new list();

……2 新增元素

intlist.add(1);

3 插入元素

stringlist.insert(1,"abc");

4 訪問元素

可直接用索引器,intlist[0]

由於list集合類實現了ienumerable介面,所以可用foreach

list類還提供了foreach()方法,該方法用action引數宣告

public void foreach(actionaction);

……5刪除元素

intlist.removeat(3);

也可用remove(),但這個會先進行搜尋

6搜尋可以使用的有:indexof(),lastindexof(),findindex(),findlastindex(),find()和findlast().

若只檢查是元素是否存在,能用exists()方法

7排序可以使用sort()方法對元素進行排序.sort()使用快速排序演算法。

sort()有幾個過載方法:

public void list.sort();

public void list.sort(comparison);

public void list.sort(icomparer);

public void list.sort(int32,int32,icomparer);

只有集合中的元素實現了icomparable介面,才能使用不帶引數的sort()方法。

8型別轉換

使用list類的convertall()方法,可以把所有型別的集合轉換為另一種型別。

convertall()方法使用乙個converter委託,該委託的定義如下:

public sealed delegate toutput converter(tinput from);

10.3.2 唯讀集合

list集合的asreadonly()方法返回readonlycollection型別的物件,該類實現的介面與list集合相同,但所有修改集合的方法和屬性都丟擲notsupportedexception.

10.4佇列

fifo先進先出

佇列使用system.collections.generic命名空間中的泛型類queue實現,它實現了icollection和ienumerable介面,但沒有實現icollection介面,因為這個介面add()和remove()方法不能用於佇列。

因為queue類沒有實現ilist介面,所以不能用索引器訪問佇列。

queue類的成員

count     返回佇列中的元素個數

enqueue    在佇列一端新增乙個元素

dequeue    在佇列的頭部讀取和刪除乙個元素,如果沒元素就丟擲乙個invalidoperationexception型別的異常

peek     在佇列的頭部讀取乙個元素,但不刪除

trimexcess     重新設定佇列的容量。dequeue不會重置容量

10.5棧

statck實現了ienumerable和icollection介面

count     返回棧中的元素個數

push     在棧頂新增乙個元素

pop     從棧頂刪除乙個元素,並返回該元素,如果棧是空的,就丟擲invalidoperationexception異常

peek     返回棧頂的元素,但不刪除它

contains 確定某個元素是否在棧中,如果是,就返回true

(2014.12.24)

php學習筆記 高階教程

var dump arr 列印陣列 print r arr 列印陣列,但不列印型別 unset arr 0 刪除陣列中第乙個元素 is array 判斷是不是陣列 sort arr 排序,從小到大,重新排序,下標不變 ksort arr 按照鍵名重新排序 大寫字母優於小寫字母 count arr 統...

繼承(學習筆記) 《高階教程》

先不管上圖,先來看以下 function person person.prototype.saypersonname function function student student.prototype new person student 的原型物件替換為 person 的例項物件 參考上圖中右...

繼承(學習筆記) 《高階教程》

先不管上圖,先來看以下 function person person.prototype.saypersonname function function student student.prototype new person student 的原型物件替換為 person 的例項物件 參考上圖中右...