C 標準庫迭代迴圈變數型別

2021-06-20 03:33:03 字數 385 閱讀 5412

今天做hackermeter上一題的時候用到string的逆向迭代,開始使用了如下迴圈:

for (string::size_type i = s.size() - 1; i >= 0; i--)

出現segmentation fault, 單步除錯的時候發現此迴圈是死迴圈,才意識到string::size_type型別是無符號的,因此i是永遠不小於0的。這個問題與string其實沒有關係,其他stl型別的相關size和type等值也都是無符號,包括標準c的size_t也是如此,這也更符合事實。

解決辦法有兩個:如果確認string的長度不會越界,那麼直接用int型別將s.size()強制轉化為有符號型別就可以。當然,更好更通用的辦法是使用迭代器來進行迭代。

C 標準庫型別vector,迭代器使用

要想使用vector,必須包含適當的標頭檔案。include using std vector vector是乙個類模板。vector v1 v1是空得裡面裝的是t型別 vector v2 v1 v2包含v1裡面的所有元素的副本 vector v2 v1 等價v2 v1 vector v3 n,va...

C 標準庫 迭代器

迭代器是乙個 可遍歷stl容器內全部或部分元素 的物件。乙個迭代器用來指出容器中的乙個特定位置。operator 返回當前位置上的元素值 operator 和operator 判斷兩個迭代器是否指向同意位置 operator 為迭代器賦值。因為每個容器選擇的資料結構不同,所以每一種容器都必須提供自己...

C 標準庫之迭代器

迭代器是對指標進行進一步抽象的產物。迭代器是遍歷所有容器 序列 流的統一介面,是標準庫泛形演算法的基礎。迭代器根據其能力分為五種 category properties valid expressions all categories copy constructible copy assignab...