9.26
int main()
{
int ia[]={0,1,2,3,4,5,8,13,21,55,89};
list<int> l(ia,ia+11);
vector<int> d(ia,ia+11);
list<int>::iterator iter1=l.begin();
vector<int>::iterator iter2=d.begin();
while(iter1!=l.end()){
if(*iter1%2!=0) l.erase(iter1);
else {
cout<<*iter1<<" ";
*iter1++;
};
}
while(iter2!=d.end()){
if(*iter2%2==0) d.erase(iter2);
else {
cout<<*iter2<<" ";
*iter2++;
};
}
system("pause");
return 0;
}
9.27
int main()
{
string s1("size");
string s2("swap");
string a[]={"pop_back","pop_front","size","resize","rebegin"};
list<string> it(a,a+5);
deque<string> d(a,a+5);
list<string>::iterator iter=it.begin();
deque<string>::iterator iter1=d.begin();
while(iter!=it.end()){
if(*iter==s1) it.erase(iter);
else iter++;
}
while(iter1!=d.end()){
if(*iter1==s2) d.erase(iter1);
else iter1++;
}
system("pause");
return 0;
}
9.34
int main()
{
string s("Hiya!");
string::iterator iter=s.begin();
while(iter!=s.end()){
*iter=toupper(*iter);
cout<<*iter;
iter++;
}
system("pause");
return 0;
}
9.35
int main()
{
string s("Hiya!");
string::iterator iter=s.begin();
while(iter!=s.end()){
if(isupper(*iter)) {
s.erase(iter);
--iter;
}
iter++;
}
system("pause");
return 0;
}
9.36
int main()
{
vector<char> v(10,'c');
string s;
s.assign(v.begin(),v.end());
cout<<s;
system("pause");
return 0;
}
9.38
int main()
{
string s("ab2c3d7R4E6");
string s1("23476");
string s2("abcdER");
string::size_type pos=0;
while((pos=s.find_first_of(s1,pos))!=string::npos){
cout<<"found menber at index"<<pos<<endl;
cout<<"element is:"<<s[pos]<<endl;
pos++;
}
system("pause");
return 0;
}
用find_first_not_of函数输出所有字母。
int main()
{
string s("ab2c3d7R4E6");
string s1("23476");
string::size_type pos=0;
while((pos=s.find_first_not_of(s1,pos))!=string::npos){
cout<<"found menber not be contained by s1 at index"<<pos<<endl;
cout<<"element is:"<<s[pos]<<endl;
pos++;
}
system("pause");
return 0;
}
9.40
int main()
{
string q1("When lilacs last in the dooryard bloom'd");
string q2("The child is father of the man");
string sentence;
sentence.assign(q2.begin(),q2.begin()+12);
sentence.append(q1.begin()+17,q1.end()-8);
cout<<sentence<<endl;
system("pause");
return 0;
}
9.41
string greet(string form, string lastname, string title, string::size_type pos, int length){
form.replace(8,5,lastname);
form.replace(5,2,title,pos,length);
return form;
}
int main()
{
string s1("Dear Ms Daisy:");
string s2("MrsMsMissPepole");
string lastname("Annap");
string s=greet(s1,lastname,s2,5,4);
cout<<s<<endl;
system("pause");
return 0;
}
9.42
int main()
{
std::stack<string> stk;
string s;
cout<<"Enter words and enter (ctr+s) to exit"<<endl;
while(cin>>s)
stk.push(s);
system("pause");
return 0;
}
9.43
int main()
{
stack<char> stk;
string s;
cout<<"Enter the expression:"<<endl;
cin>>s;
string::iterator iter=s.begin();
while(iter!=s.end()){
if(*iter!=')') stk.push(*iter);//保存‘)’之前的表达式
else {
while(stk.top()!='('&&stk.empty()){//找到最前面的‘(’
stk.pop();
}
if(stk.empty()) cout<<"patentheses are not matched"<<endl;
else{
stk.pop();
stk.push('@');//用@代替‘(’
}
}
}
system("pause");
return 0;
}