標籤:const 指標 main while insert auto sys color log
練習9.18
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 #include <string> 6 #include <iterator> 7 8 using namespace std; 9 10 int main()11 {12 deque<string> de;13 string word;14 while (cin >> word)15 {16 de.push_back(word);17 }18 for (auto it = de.begin(); it != de.end(); ++it)19 cout << *it << endl;20 system("pause");21 return 0;22 }
練習9.19
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 #include <string> 6 #include <iterator> 7 8 using namespace std; 9 10 int main()11 {12 list<string> de;13 string word;14 while (cin >> word)15 {16 de.push_back(word);17 }18 for (auto it = de.begin(); it != de.end(); ++it)19 cout << *it << endl;20 system("pause");21 return 0;22 }
練習9.20
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 #include <string> 6 #include <iterator> 7 8 using namespace std; 9 10 void print(const deque<int> de);11 12 int main()13 {14 list<int> num;15 num.insert(num.begin(), { 1,2,3,4,5,6,7,8,9,10 });16 deque<int> num1;17 deque<int> num2;18 for (auto it = num.begin(); it != num.end(); ++it)19 {20 if ((*it) % 2 == 0)21 num1.push_back(*it);22 else23 num2.push_back(*it);24 }25 print(num1);26 cout << endl;27 print(num2);28 system("pause");29 return 0;30 }31 32 void print(const deque<int> de)33 {34 for (auto c : de)35 cout << c << endl;36 }
練習9.21
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 #include <string> 6 #include <iterator> 7 8 using namespace std; 9 10 11 int main()12 {13 vector<string> lst;14 string word;15 auto iter = lst.end();16 while (cin >> word)17 {18 iter = lst.insert(iter, word);19 }20 for (auto c : lst)21 cout << c << endl;22 system("pause");23 return 0;24 }
練習9.22
1 #include <iostream> 2 #include <vector> 3 #include <list> 4 #include <deque> 5 #include <string> 6 #include <iterator> 7 8 using namespace std; 9 10 11 int main()12 {13 int some_val = 1;14 vector<int> iv{ 1,2,3,4,5,6,7,8,9,10 };15 auto i = iv.size();16 vector<int>::iterator iter = iv.begin(),17 mid = iv.begin() + iv.size() / 2;18 while (iter != mid)19 {20 if (*iter == some_val)21 {22 iter = iv.insert(iter, 2 * some_val);23 iter = iter + 2;24 mid = iv.begin() + i / 2;25 }26 else27 ++iter;28 }29 for (auto c : iv)30 cout << c << endl;31 system("pause");32 return 0;33 }
一個是該迴圈是個死迴圈,iter永遠不會不等於mid,第二點很重要,自己在做題時有遺漏,向一個vector、string、deque插入元素會使所有指向容器的迭代器、引用和指標失效。
C++primer 9.3.1節練習