string::iterator p; // 乙個正常的迭代器, 可++, 可解引用
string::const_iterator cp; // 可++, 不可解引用
const string s("abcde"); // s物件為乙個const物件, 不可修改
1. p = s.begin();
錯誤, s物件是乙個const修飾的string類物件, 所以s.begin()呼叫的第二個函式,如圖
所以不合法, 許可權不能放大
2. *cp = *p;
不合法, cp不可解引用
3. cp = p;
合法, 許可權可縮小
4. ++cp;
合法, 可以++
5.p = cp;
不合法, 許可權不能放大
6. ++*p;
合法7.p < cp;
不合法,關係操作符的兩個迭代器必須指向同乙個容器中的元素或超出容器末端的下乙個位置
8. cout << p - cp;
不合法, 原因同上, 具體問題可以檢視部落格鏈結如下:
部落格鏈結
9. *p = *cp;
不合法, cp不能解引用
10. cout << *s.begin();
不合法, 原因同上
c++中const迭代器 和 const_iterator的區別
關於迭代器的一些總結
在進行for迴圈的時候,會碰到兩個名詞 乙個是可迭代的物件iterable,乙個是迭代器iterator。可迭代的物件有很多,例如sequence中的string,list,tuple,還有字典dict,檔案file等,在可迭代的物件中,主要是實現了 iter 方法,從而使可迭代的。迭代器itera...
c 關於迭代器的一些認識
眾所週之當使用乙個容器的insert或者erase函式通過迭代器插入或刪除元素 可能 會導致迭代器失效,因此很多建議都是讓我們獲取insert或者erase返回的迭代器,以便用重新獲取新的有效的迭代器進行正確的操作 view plaincopy to clipboardprint?iter vec....
集合 迭代器的一些總結
map isempty 如果map未包含鍵 值對映關係,則返回 true get object key 根據鍵獲取值,如果鍵為空 返回null put key,value 在map中建立鍵 值關係,如果map中存在該鍵,則新值替換舊值 values 返回值為collection的包含map值的檢視 ...