练习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 else 23 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 else 27 ++iter; 28 } 29 for (auto c : iv) 30 cout << c << endl; 31 system("pause"); 32 return 0; 33 }
一个是该循环是个死循环,iter永远不会不等于mid,第二点很重要,自己在做题时有遗漏,向一个vector、string、deque插入元素会使所有指向容器的迭代器、引用和指针失效。
时间: 2024-10-31 15:26:29