偶然發現 迭代器的自增與解引用(指標)

2021-05-25 18:38:34 字數 598 閱讀 7281

在c++ primer第四版中,有這樣一節:

vector迭代器的自增和解引用運算。迭代器使用自增操作符(++)向前移動迭代器指向容器中下乙個元素。ok,這沒什麼問題。但是在note裡,它是這樣說的,由於end操作返回的迭代器不指向任何元素,因此不能對它進行解引用或自增操作。也就是說:

vector::iterator iter=vint.end();

++iter;  //錯誤!

coutvectorvint;

while (i<4)

vector::iterator iter=vint.end();

++iter;

cout《我為vint推入3個元素,內容分別為1、2、3,然後將迭代器置為end位置,就是所謂的「末端的下乙個」,結果執行**發現沒有出現想象中的錯誤提示,反而通過測試並將當前位置、內容輸出:10049052(記憶體位址),0(無內容)。後我又把iter向後挪了一位,(程式中的++iter),驚奇發現:10049056(這個沒什麼),10049072(what??這個是什麼東東?,誰把某位址存在這個地方了??)

「由於end操作返回的迭代器不指向任何元素,因此不能對它進行解引用或自增操作。」是這句話錯了?還是我弄錯了? - -

前置自增與後置自增的區別( i,i )

1.表示式的值不同 這一點想必大多數人都記得 即 i,i的值自增後,返回i自增後的值 i i的值自增,返回的卻是i自增前的值 內部具體操作可以看作是這樣的 前置自增 後置自增 如上所示,後置自增除了返回值與前置自增不同以外,還多了乙個建立臨時物件的步驟,這也就是為什麼會有前置自增比後置自增更高效的說...

sqlite的自增主鍵與自增主鍵歸零

引用 1.sqlite的自增主鍵 用資料庫快取一些資料,想實現佇列的那種,先入先出,需要對插入sqlite的資料進行個排序,實驗了rowid,好像sqlite不能按照rowid刪除,故考慮增加乙個自增主鍵的字段,來區分插入的先後!sqlite從2.3.4版本開始支援自增主鍵,如果將乙個表中的乙個字段...

oracle 自增序列與觸發器

1.檢視某張表下的觸發器資訊 select from all triggers where table name 表名 2.檢視某自增序列的資訊 select from user sequences where sequence name 自增序列名稱 3.檢視自增序列下次自增的值 select 自...