STL小代码之二

//使用容器将字符数组中的第一个单词逆序输出
#include<iostream>
#include<vector>
#include<algorithm>
#include<stack>
using namespace std;

int main(int argc,char *argv[])
{
char a[]={"apple orange watermelon"};
stack<char> charStack;
vector<char> vi(a,a+sizeof(a)/sizeof(char));
auto rcomma=find(vi.cbegin(),vi.cend(),' ');
for(auto i=vi.cbegin();i!=rcomma;i++)
{
charStack.push(*i);
}
while(!charStack.empty())
{
char value=charStack.top();
charStack.pop();
cout<<value<<endl;
}
return 0;
}

//将两个双向链表合并并输出
//list中的merge
#include<iostream>
#include<list>

using namespace std;

typedef list<int> LISTINT;

void printElem(list<int> a)
{
LISTINT::iterator plist;
for(plist=a.begin();plist!=a.end();plist++)
cout<<*plist<<endl;
}
int main(int argc,char *argv[])
{
int a1[]={1,2,3,4};
int a2[]={5,6,7,8};
list<int> va(a1,a1+4),vb(a2,a2+4);
va.merge(vb);
cout<<"调用list中的merge"<<endl;
cout<<"合并之后的va"<<endl;
printElem(va);
cout<<"合并之后的vb"<<endl;
printElem(vb); //合并之后list vb消失

return 0;
}


//algorithm中的merge
#include<iostream>
#include<list>
#include<algorithm>

using namespace std;

typedef list<int> LISTINT;

void printElem(list<int> a)
{
LISTINT::iterator plist;
for(plist=a.begin();plist!=a.end();plist++)
cout<<*plist<<endl;
}

int main(int argc,char *argv[])
{
int a1[]={1,2,3,4};
int a2[]={5,6,7,8};
int a3[8]={};
list<int> va(a1,a1+4),vb(a2,a2+4),vc(a3,a3+8);
merge(va.begin(),va.end(),vb.begin(),vb.end(),vc.begin());
cout<<"合并之后的va"<<endl;
printElem(va);
cout<<"合并之后的vb"<<endl;
printElem(vb);
cout<<"合并之后的vc"<<endl;
printElem(vc);

 

return 0;
}

posted @ 2016-04-08 14:31  漂泊的黄家庄  阅读(119)  评论(0编辑  收藏  举报