`

【vc】【STL源码】vector,deque与sort的用法比较及入门

 
阅读更多
#include<stdio.h>
//sort的定义
#include<algorithm>
//vector的定义
#include<vector>
//deque的定义
#include<deque>
//同样,引入std命名空间
usingnamespacestd;
//用数组保存
intfriends[1000];
//用vector保存
vector<int>vtFriends;
//用deque保存
deque<int>dqFriends;

intmain()
...{
intT;
scanf(
"%d",&T);
intiCase;
for(iCase=1;iCase<=T;iCase++)
...{
//每次要将vector和deque请空
vtFriends.clear();
dqFriends.clear();
printf(
"Scenario#%d: ",iCase);
intn,f,tn;
scanf(
"%d%d",&n,&f);
//由于后面要找三次,所以先把n的值保存下来
tn=n;
inti;
for(i=0;i<f;i++)
...{
//保存到数组
scanf("%d",&friends[i]);
//保存到vector
vtFriends.push_back(friends[i]);
//保存到deque
dqFriends.push_back(friends[i]);
}

//排序,如果不给第三个参数,默认是按升序排
//sort实现的是快速排序,它是不稳定排序,
//需要稳定排序时,用stable_sort,用法与sort完全一样
//对数组进行排序
sort(friends,friends+f);
//对vector进行排序
sort(vtFriends.begin(),vtFriends.end());
//对deque进行排序
sort(dqFriends.begin(),dqFriends.end());
//在数组里查找
for(i=f-1;i>=0;i--)
...{
n
-=friends[i];
if(n<=0)
break;
}

//在vector里查找
//先恢复n的值
n=tn;
for(i=f-1;i>=0;i--)
...{
n
-=vtFriends.at(i);
if(n<=0)
break;
}

//在deque里查找
//先恢复n的值
n=tn;
for(i=f-1;i>=0;i--)
...{
//deque的at方法效率比vector低,
//因为deque的元素在内存上不完全是连续的
n-=dqFriends.at(i);
if(n<=0)
break;
}

if(i<0)
puts(
"impossible");
else
printf(
"%d ",f-i);
puts(
"");
}

return0;
}

使用的我们学院一个牛人写的一篇东西哈,这里介绍vector,deque和sort的用法,这些都是STL的内容,给你一个网站吧,http://www.stlchina.org/
不过一般好像都不提倡一开始就在程序中使用STL,那些算法都自己写写最好,然后等学会了再用也会理解得更深入的!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics