今天做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...