C++Primer 第五版 9.3.1节练习
2015-09-17 07:33
351 查看
练习9.18:编写程序,从标准输入中读取string序列,存入一个deque中。编写一个循环,用迭代器打印deque中的元素。
答:见 练习9.18.cpp
练习9.19:重写上题的程序,用list替代deque。列出程序要做出哪些改变。
答:见 练习9.19.cpp
练习9.20:编写程序,从一个
答: 见 练习9.20.cpp
练习9.21:如果我们将第308页中使用insert返回值将元素添加到list中的循环程序改写为将元素插入到vector中,分析循环将如何工作。
答:见练习9.21.cpp 说实话,没怎么看懂题目。循环过程和P308页基本相同。参考P308
练习9.22:假定iv是一个int的vector,下面的程序存在什么错误?你将如何修改?
答:缺少一行,++iter,否则,iter != mid条件一直为真,程序陷入死循环中。 见练习9.22.cpp
练习9.18
练习9.19
练习9.20
练习9.21
练习9.22
答:见 练习9.18.cpp
练习9.19:重写上题的程序,用list替代deque。列出程序要做出哪些改变。
答:见 练习9.19.cpp
练习9.20:编写程序,从一个
list<int>拷贝元素到两个deque中。值为偶数的所有元素都拷贝到一个deque中,而奇数值元素都拷贝到另一个deque中。
答: 见 练习9.20.cpp
练习9.21:如果我们将第308页中使用insert返回值将元素添加到list中的循环程序改写为将元素插入到vector中,分析循环将如何工作。
答:见练习9.21.cpp 说实话,没怎么看懂题目。循环过程和P308页基本相同。参考P308
练习9.22:假定iv是一个int的vector,下面的程序存在什么错误?你将如何修改?
vector<int>::iterator iter = iv.begin(), mid = iv.begin() + iv.size()/2; while(iter != mid) If(*iter == some_val) iv.insert(iter,2*some_val);
答:缺少一行,++iter,否则,iter != mid条件一直为真,程序陷入死循环中。 见练习9.22.cpp
练习9.18
/* *练习9.18 *日期:2015/7/28 *问题描述:练习9.18:编写程序,从标准输入中读取string序列,存入一个deque中。编写一个循环,用迭代器打印deque中的元素。 *功能; 操作deque *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream> #include <deque> #include <string> using namespace std; int main() { string str; deque<string> deq; while(cin >> str) { deq.push_back(str); } auto iter1 = deq.begin(); auto iter2 = deq.end(); while(iter1 != iter2) { cout << *iter1 << " "; ++iter1; } cout << endl; return 0; }
练习9.19
/* *练习9.19 *日期:2015/7/28 *问题描述:练习9.19:重写上题的程序,用list替代deque。列出程序要做出哪些改变。 *功能;操作list *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream> #include <list> #include <string> using namespace std; int main() { string str; list<string> li; while(cin >> str) { li.push_back(str); } auto iter1 = li.begin(); auto iter2 = li.end(); while(iter1 != iter2) { cout << *iter1 << " "; ++iter1; } cout << endl; return 0; }
练习9.20
/* *练习9.20 *日期:2015/7/28 *问题描述:练习9.20:编写程序,从一个list<int>拷贝元素到两个deque中。值为偶数的所有元素都拷贝到一个deque中,而奇数值元素都拷贝到另一个deque中。 *功能; *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream> #include <list> #include <deque> using namespace std; int main() { list<int> li = {1,2,3,4,5,6,7,8,9,10}; deque<int> deq_odd,deq_even; auto iter1 = li.begin(); auto iter2 = li.end(); while(iter1 != iter2) { if(*iter1 % 2 == 0) deq_even.push_back(*iter1); else deq_odd.push_back(*iter1); ++iter1; } for(auto it = li.begin(); it != li.end(); ++it) //auto要紧贴着用,否则就会出现意想不到的错误 cout << *it << " "; cout << endl; for(auto i = 0; i != deq_odd.size(); ++i) cout << deq_odd[i] << " "; cout << endl; for(auto i= 0; i != deq_even.size(); ++i) cout << deq_even[i] << " "; cout << endl; return 0; }
练习9.21
/* *练习9.21 *日期:2015/7/28 *问题描述:练习9.21:如果我们将第308页中使用insert返回值将元素添加到list中的循环程序改写为将元素插入到vector中,分析循环将如何工作。 *功能; *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream> #include <vector> #include <list> #include <string> using namespace std; int main() { vector<string> vec; string word; auto iter = vec.begin(); while(cin >> word) iter = vec.insert(iter,word); for(auto it = vec.begin(); it != vec.end(); ++it) cout << *it << " "; cout << endl; return 0; }
练习9.22
/* *练习9.22 *日期:2015/7/28 *问题描述: *练习9.22:假定iv是一个int的vector,下面的程序存在什么错误?你将如何修改? *Vector<int>::iterator iter = iv.begin(), mid = iv.begin() + iv.size()/2; *While(iter != mid) * If(*iter == some_val) * iv.insert(iter,2*some_val); *功能;改错 *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream> #include <vector> using namespace std; int main() { vector<int> vec = {1,2,3,4,5,6,7,8}; for(auto i = 0; i != vec.size(); ++i) cout << vec[i] << " "; cout << endl; vector<int>::iterator iter1 = vec.begin(); vector<int>::iterator iter2 = vec.begin() + vec.size()/2; while(iter1 != iter2) { if(*iter1 == 2) vec.insert(iter1,2 * 5); ++iter1; //缺少一行,++iter,否则,iter != mid条件一直为真,程序陷入死循环中。 } for(auto i = 0; i != vec.size(); ++i) cout << vec[i] << " "; cout << endl; return 0; }
相关文章推荐
- C++Primer第五版 9.3.6节练习
- C++Primer第五版 9.2.7节练习
- C++Primer 第五版 9.2节练习
- C++Primer第五版 9.2.5节练习
- C++Primer第五版 9.2.3节练习
- C++Primer第五版 9.2.2节练习
- C++Primer第五版 9.2.1节练习
- C++Primer第五版 9.1节练习
- C++Primer第五版 第8章 IO库(练习解答)
- C++Primer第五版 8.3.2节练习
- C++Primer第五版 8.3.1节练习
- C++Primer第五版 8.2.2节练习
- C++Primer第五版 8.2.1节练习
- C++Primer第五版 8.1.2节练习
- C++Primer第五版 第7章 类(练习解答)
- C++Primer第五版 7.6节练习
- C++Primer第五版 7.5.6节练习
- C++Primer第五版 7.5.5节练习
- C++Primer第五版 7.5.4节练习
- Leetcode House Robber II