int ia[]={0,1,1,2,3,5,8,13,21,55,89};
vector<int> ivec;
list<int> ilit;for(auto ip =begin(ia); ip !=end(ia);++ip){
ivec.push_back(*ip);
ilit.push_back(*ip);}//由于删除元素会使迭代器失效,因此不能在for循环中使用++it,应在循环体中自行定义迭代条件for(auto it = ivec.begin(); it != ivec.end();){if(*it %2==0)
it = ivec.erase(it);else++it;}for(auto it = ilit.begin(); it != ilit.end();){if(*it %2!=0)
it = ilit.erase(it);else++it;}for(auto it = ivec.begin(); it != ivec.end();++it)
cout <<*it << endl;for(auto it = ilit.begin(); it != ilit.end();++it)
cout <<*it << endl;
Test 9.27
forward_list<int> flst{0,1,1,2,3,5,8,13,21,55,89};auto prev = flst.before_begin();for(auto it = flst.begin(); it != flst.end();){if(*it %2!=0)
it = flst.erase_after(prev);else{++prev;++it;}}for(auto it = flst.cbegin(); it != flst.cend();++it)
cout <<*it << endl;
vector<string> svec ={"1.2","2.9","3.0","4.3","5.3","10.1","12.7","14.1"};double sum =0;;for(auto s : svec){
sum +=stod(s);}
cout << sum << endl;
Test 9.51
classdate{public:unsigned year =0;unsigned month =0;unsigned day =0;date(string& str);};
date::date(string& str){//yearfor(int i =0; i < str.size()-3;++i){if(isdigit(str[i])&&isdigit(str[i +1])&&isdigit(str[i +2])&&isdigit(str[i +3])){
year =stoul(str.substr(i,4));}}//day
string letters ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
string numbers ="0123456789";if(isdigit(str[str.find_first_of(numbers)+1]))//if the next char of the first number is also number{
day =stoul(str.substr(str.find_first_of(numbers),2));//the first two numbers is day}else
day =stoul(str.substr(str.find_first_of(numbers),1));//the first number is day//monthif(str.find_first_of(letters)== string::npos)//if no letters{auto first_num_pos = str.find_first_of(numbers);
month =stoul(str.substr(str.find_first_of(numbers, first_num_pos +1),1));// the second number is month}else//exist letters{
vector<string> month_svec ={"January","February","March","April","May","June","July","August","September","October","November","December"};
vector<string> month_simp_svec ={"Jan","Feb","Mar","Apr","May","June","July","Aug","Sep","Oct","Nov","Dec"};for(unsigned i =0; i < month_svec.size();++i){if(str.find(month_svec[i])!= string::npos || str.find(month_simp_svec[i])!= string::npos){
month = i +1;}}}}