c++ primer课后习题9.26,9.27

来源:互联网 发布:java数组有null 编辑:程序博客网 时间:2024/04/29 08:52

第4版习题解答中所给答案不能成功运行,提示如下错误:



正确解答如下:

#include <iostream>#include <vector>#include <list>using namespace std;int main(){int ia[] = {1,1,2,3,5,8,13,21,55,89};//k表示数组中元素的个数int k = sizeof(ia)/sizeof(int);vector<int> ivec(ia,ia + k);list<int> ilst(ia,ia + k);vector<int>::iterator pvec;list<int>::iterator lit;//删除ivec中的偶数元素for (pvec = ivec.begin();pvec != ivec.end();){//元素为偶数if(*pvec % 2 == 0){//注:当删除的是首元素时,删除后lit自动指向ilst的新的首元素cout << "删除偶数: " << *pvec << endl;pvec = ivec.erase(pvec);}else++pvec;}//打印ivec中元素for (pvec = ivec.begin();pvec != ivec.end();++pvec)cout << *pvec << " ";cout <<  endl;//删除ilst中的奇数元素for (lit = ilst.begin();lit != ilst.end();){//元素为奇数if(*lit % 2 == 1){//注:当删除的是首元素时,删除后lit自动指向ilst的新的首元素cout << "删除奇数: " << *lit << endl;lit = ilst.erase(lit);}else++lit;}//打印ilst中元素for (lit = ilst.begin();lit != ilst.end();++lit)cout << *lit  << " ";cout << endl;return 0;}



代码如下:

#include <iostream>#include <list>#include <string>using namespace std;int main(){list<string> slst;cout << "input some strings(Ctrl + z to quit):" << endl;string str,val;while (cin >> str)slst.push_back(str);cout << "the value you want to find:" << endl;cin.clear();cin >> val;list<string>::iterator sp;int k = 0;for (sp = slst.begin();sp != slst.end();){if (*sp == val){sp = slst.erase(sp);k++;}else++sp;}if(k == 0){cout << "no such value!" << endl;exit(-1);}for (list<string>::iterator sp = slst.begin();sp != slst.end();++sp)cout << *sp << " ";cout << "\nsuccess!" << endl;return 0;}




原创粉丝点击