標籤:ons ++ int tor hat cto clu 順序 runtime
練習9.3
迭代器begin和end必須指向相同的容器,end可以與begin指向相同的位置,但不能指向begin之前的位置;
練習9.4
1 #include <iostream> 2 #include <fstream> 3 #include <sstream> 4 #include <vector> 5 #include <iterator> 6 7 using namespace std; 8 9 bool checkValue(vector<int>::iterator it, vector<int>::iterator it1, int a);10 11 int main()12 {13 vector<int> num{ 1,2,3,4,5,6 };14 cout << checkValue(num.begin(), num.end(), 7) << endl;15 system("pause");16 return 0;17 }18 19 bool checkValue(vector<int>::iterator it, vector<int>::iterator it1, int a)20 {21 while (it != it1)22 {23 if (*it == a)24 return true;25 else26 ++(it);27 }28 return false;29 }
練習9.5
1 #include <iostream> 2 #include <fstream> 3 #include <sstream> 4 #include <vector> 5 #include <iterator> 6 7 using namespace std; 8 9 const vector<int>::iterator *checkValue (vector<int>::iterator it, vector<int>::iterator it1, int a);10 11 int main()12 {13 vector<int> num{ 1,2,3,4,5,6 };14 cout << (checkValue(num.begin(), num.end(), 7)) << endl;15 system("pause");16 return 0;17 }18 19 const vector<int>::iterator *checkValue (vector<int>::iterator it, vector<int>::iterator it1, int a)20 {21 while (it != it1)22 {23 try24 {25 if (*it == a)26 return ⁢27 else28 ++(it);29 if (it == it1)30 throw runtime_error("error");31 }32 catch (runtime_error err) {33 cout << err.what() << endl;34 }35 }36 return &it1;37 }
利用拋出異常的方法來處理未找到定值的情況;
練習9.6
迭代器支援的算術運算不能用於list容器,因為list容器不是按照順序儲存的,他是個雙向鏈表;
改成while(iter1 != iter2)
C++primer 9.2.1節練習