const_iterator简单介绍
生活随笔
收集整理的這篇文章主要介紹了
const_iterator简单介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果遇到常量容器類型,需要使用迭代器的時候,那么必須使用常量迭代器——const_iterator
#include <iostream> #include <string> #include <vector> #include <deque> #include <list> #include <forward_list> #include <string> #include <array> using namespace std; #define LENGTH 10 typedef int TYPE; typedef vector<TYPE> VECTORTYPE; typedef deque<TYPE> DEQUETYPE; typedef list<TYPE> LISTTYPE; typedef forward_list<TYPE> FORWARD_LISTTYPE; typedef array<TYPE,LENGTH> ARRAYTYPE; void print(VECTORTYPE & ); void print(DEQUETYPE & ); void print(LISTTYPE & ); void print(FORWARD_LISTTYPE & ); void print(ARRAYTYPE & ); void print(string &); void print(list<string> &); int main() {list<string> names;vector<const char*> oldstyle = {"asdf","asdf"};//names = oldstyle;wrong ,type is not matchingnames.assign(oldstyle.begin(),oldstyle.end());print(names);const list<const char*> c_str{"const string1","const string2","const string3"}; //因為c_str是常量迭代器,它的迭代器必須是常量迭代器類型:const_iterator,例如下面會報錯for(list<const char*>::iterator i = c_str.begin(); i != c_str.end(); ++i) cout << *i << " ";return 0; } void print(VECTORTYPE &vec) {for(VECTORTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(DEQUETYPE &vec) {for(DEQUETYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(LISTTYPE &vec) {for(LISTTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(FORWARD_LISTTYPE &vec) {for(FORWARD_LISTTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(ARRAYTYPE &vec) {for(ARRAYTYPE::iterator i = vec.begin() ; i != vec.end() ; ++i){ cout << *i << " ";}cout << endl;return ; }void print(string & s_vec) {for(string::iterator i = s_vec.begin(); i != s_vec.end() ; ++i) {cout << *i << " ";}cout << endl; } void print( list<string> &l) {for(list<string>::iterator i = l.begin();i != l.end();++i)cout << *i << " ";cout << endl;}//上述代碼會在g++編譯器中報錯: r@r-Sys:~/c++/9/now$ ./123 asdf asdf const string1 const string2 const string3 r@r-Sys:~/c++/9/now$ g++ 11.cc -o 123 11.cc: In function ‘int main()’: 11.cc:33:50: error: conversion from ‘std::__cxx11::list<const char*>::const_iterator {aka std::_List_const_iterator<const char*>}’ to non-scalar type ‘std::__cxx11::list<const char*>::iterator {aka std::_List_iterator<const char*>}’ requestedfor(list<const char*>::iterator i = c_str.begin(); i != c_str.end(); ++i)修改方法是:把代碼中提示的那里的iterator改成:const_iterator即可?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的const_iterator简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: This XML file does n
- 下一篇: C++STL中swap函数操作与内存地址