📄 online judge论坛-acm-icpc-[第02篇]acm-icpc竞赛之stl简介.htm
字号:
else{return('<img src=Skins/Default/birth/z9.gif alt=射手座'+mm+'-'+dd+'>');}
break;
default : return('');
}
}else{return('');}
}
function usercolor(UserGroupID,UserName)
{
UserGroupID = parseInt(UserGroupID);
var UserNameStyle=GroupUserName[UserGroupID].split("§");
return(UserNameStyle[0]+UserName+UserNameStyle[1]);
}
</script>
<a name="132" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"></a><table cellPadding="5" cellSpacing="1" align="center" class="tableborder1" style="table-layout:fixed;word-break:break-all" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<tr>
<td class="tablebody1" valign="top" width="175">
<table width="100%" cellpadding="4" cellspacing="0">
<tr>
<td width="*" valign="middle" style="filter:glow(color=#9898BA,strength=2)"> <script type="text/javascript" language="javascript">document.write (usercolor('1','Teacher彭'));</script></td>
<td width="25" valign="middle"><img src="Skins/Default/ofMale.gif" alt="帅哥哟,离线,有人找我吗?"></td>
<td width="16" valign="middle"><script type="text/javascript" language="javascript">document.write (astro(''));</script></td>
</tr>
</table> <img src="Images/userface/image1.gif" width="32" height="32"><br> <img src="Skins/Default/star/level20.gif"><br> 等级:管理员<br> 文章:801<br> 积分:6804<br> 注册:2005-09-02</td>
<td class="tablebody1" valign="top" height="100%">
<table width="100%" height="30">
<tr>
<td width="*" align="absmiddle"><a href="http://wpa.qq.com/msgrd?V=1&Uin=515957164&Site=By Dvbbs&Menu=yes" title="点击发送QQ消息给Teacher彭" target="_blank"><img src="http://wpa.qq.com/pa?p=1:515957164:4" border="0" width="16" height="16" align="absmiddle"></a> <a href="http://wpa.qq.com/msgrd?V=1&Uin=515957164&Site=By Dvbbs&Menu=yes" title="点击发送QQ消息给Teacher彭">QQ</a> <a href="messanger.asp?action=new&touser=Teacher%C5%ED" target="_blank"><img src="Skins/Default/message.gif" border="0" alt="给Teacher彭发送一个短消息" align="absmiddle"></a> <a href="friendlist.asp?action=addF&myFriend=Teacher%C5%ED" target="_blank"><img src="Skins/Default/friend.gif" border="0" alt="把Teacher彭加入好友" align="absmiddle"></a> <a href="dispuser.asp?id=2" target="_blank"><img src="Skins/Default/profile.gif" border="0" alt="查看Teacher彭的个人资料" align="absmiddle"></a> <a href="query.asp?stype=1&nSearch=3&keyword=Teacher%C5%ED&BoardID=9&SearchDate=ALL" target="_blank"><img src="Skins/Default/find.gif" border="0" alt="搜索Teacher彭在的所有贴子" align="absmiddle"></a> <a href="mailto:pengsw@mail.buct.edu.cn"><img alt="点击这里发送电邮给Teacher彭" border="0" src="Skins/Default/email.gif" align="absmiddle"></a> <a href="http://coder.buct.edu.cn" target="_blank"><img alt="访问Teacher彭的主页" border="0" src="Skins/Default/homepage.gif" align="absmiddle"></a><a href="post.asp?action=re&BoardID=9&replyID=132&id=35&star=1&reply=true"><img src="Skins/Default/reply.gif" border="0" alt="引用回复这个贴子" align="absmiddle"></a> <a href="post.asp?action=re&BoardID=9&replyID=132&id=35&star=1"><img src="Skins/Default/reply_a.gif" border="0" alt="回复这个贴子" align="absmiddle"></a></td>
<td width="70" align="right"> 楼主</td>
</tr>
<tr>
<td height="1" colspan="3" class="singleborder"></td>
</tr>
<tr>
<td height="2" colspan="3"></td>
</tr>
</table>
<table border="0" align="center" width="95%" height="85%" style="table-layout:fixed;word-break:break-all">
<tr>
<td width="*" height="100%" style="font-size:9pt;line-height:12pt" valign="top"><img src="Skins/Default/topicface/face1.gif" border="0" alt="发贴心情" align="absmiddle"> <B>[第02篇]ACM/ICPC竞赛之STL简介</B><BR><H1 align=center>第02篇 ACM/ICPC竞赛之STL简介</H1><H2>一、关于STL</H2><br>STL(Standard Template Library,标准模板库)是C++语言标准中的重要组成部分。STL以模板类和模板函数的形式为程序员提供了各种数据结构和算法的精巧实现,程序员如果能够充分地利用STL,可以在代码空间、执行时间和编码效率上获得极大的好处。<br><br><P>STL大致可以分为三大类:算法(algorithm)、容器(container)、迭代器(iterator)。</P><P>STL容器是一些模板类,提供了多种组织数据的常用方法,例如vector(向量,类似于数组)、list(列表,类似于链表)、deque(双向队列)、set(集合)、map(映象)、stack(栈)、queue(队列)、priority_queue(优先队列)等,通过模板的参数我们可以指定容器中的元素类型。</P><P>STL算法是一些模板函数,提供了相当多的有用算法和操作,从简单如for_each(遍历)到复杂如stable_sort(稳定排序)。</P><P>STL迭代器是对C中的指针的一般化,用来将算法和容器联系起来。几乎所有的STL算法都是通过迭代器来存取元素序列进行工作的,而STL中的每一个容器也都定义了其本身所专有的迭代器,用以存取容器中的元素。有趣的是,普通的指针也可以像迭代器一样工作。</P><P>熟悉了STL后,你会发现,很多功能只需要用短短的几行就可以实现了。通过STL,我们可以构造出优雅而且高效的代码,甚至比你自己手工实现的代码效果还要好。</P><P>STL的另外一个特点是,它是以源码方式免费提供的,程序员不仅可以自由地使用这些代码,也可以学习其源码,甚至按照自己的需要去修改它。</P><P>下面是用STL写的题1067--Ugly Numbers的代码:</P><FONT size=3><PRE><PRE>#include <iostream><br>#include <queue><br><br>using namespace std;<br><br>typedef pair<unsigned long, int> node_type;<br><br>main()<br>{<br> unsigned long result[1500];<br> priority_queue< node_type, vector<node_type>, greater<node_type> > Q;<br> Q.push( make_pair(1, 2) );<br> for (int i=0; i<1500; i++)<br> {<br> node_type node = Q.top(); Q.pop();<br> switch(node.second)<br> {<br> case 2: Q.push( make_pair(node.first*2, 2) );<br> case 3: Q.push( make_pair(node.first*3, 3) );<br> case 5: Q.push( make_pair(node.first*5, 5) );<br> }<br> result[i] = node.first;<br> }<br><br> int n;<br> cin >> n;<br> while (n>0)<br> {<br> cout << result[n-1] << endl; <br> cin >> n;<br> }<br> <br> return 1;<br>}</PRE><PRE> </PRE></FONT>在ACM竞赛中,熟练掌握和运用STL对快速编写实现代码会有极大的帮助。</PRE><H2>二、使用STL</H2><P>在C++标准中,STL被组织为以下的一组头文件(注意,是没有.h后缀的!):</P><P>algorithm / deque / functional / iterator / list / map </P><P>memory / numeric / queue / set / stack / utility / vector</P><P>当我们需要使用STL的某个功能时,需要嵌入相应的头文件。但要注意的是,在C++标准中,STL是被定义在std命名空间中的。如下例所示:</P><P>#include <stack><br><br>main()<br><br>{<br><br> <FONT color=#ff0000>std::</FONT>stack<int> s;<br><br> s.push(0);<br><br> ...<br><br> return 1;<br><br>}</P><P>如果希望在程序中直接引用STL,也可以在嵌入头文件后,用using namespace语句将std命名空间导入。如下例所示:</P><P>#include <stack><br><br>using namespace std;<br><br>main()<br><br>{<br><br> stack<int> s;<br><br> s.push(0);<br><br> ...<br><br> return 1;<br><br>}</P><P>STL是C++语言机制运用的一个典范,通过学习STL可以更深刻地理解C++语言的思想和方法。在本系列的文章中不打算对STL做深入的剖析,而只是想介绍一些STL的基本应用。</P><P>有兴趣的同学,建议可以在有了一些STL的使用经验后,认真阅读一下《C++ STL》这本书(电力出版社有该书的中文版)。</P><br><div align=right><font color=#000066>[此贴子已经被作者于2005-10-3 17:20:39编辑过]</font></div></td>
</tr>
<tr><td><img src="Skins/Default/sigline.gif"><br>☆ Teacher 彭 ☆</td></tr>
<tr><td>
<div class="info"><img src="Skins/Default/jing.gif" border="0" title="本贴被加为精华" align="absmiddle"> </div>
</td></tr>
</table>
</td>
</tr>
<tr>
<td class="tablebody1" valign="middle" align="center" width="175"><img align="absmiddle" border="0" src="Skins/Default/ip.gif" alt="发贴IP已设置保密"> 2005-10-02 21:16</td>
<td class="tablebody1" valign="middle" width="*">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td valign="middle" align="left" width="*"> </td>
<td nowarp="true" valign="bottom" width="130" align="left"></td>
<td valign="middle" width="170" align="right"><a href="post.asp?action=edit&BoardID=9&replyID=132&ID=35&star=1"><img align="absmiddle" border="0" src="Skins/Default/edit.gif"></a> <a class="ImgOnclick" onMouseOver="showmenu(event,'','Menu_0');"><img align="absmiddle" border="0" src="Skins/Default/topicmanage.gif"></a> <a href="#top"><img align="absmiddle" border="0" src="Skins/Default/p_up.gif"></a></td>
<td valign="middle" align="left">
</td>
</tr>
</table>
</td>
</tr>
</table>
<div class="Menu_popup" id="Menu_0" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<div class="menuitems"><a href="TopicOther.asp?t=6&BoardID=9&id=35&ReplyID=132" title="向管理员举报该贴">举报帖子</a><BR><a href="admin_postings.asp?action=copy_a&BoardID=9&replyID=132&ID=35&star=1&userid=2">复制贴子</a><BR><a href="admin_postings.asp?action=nobest_a&BoardID=9&replyID=132&ID=35&star=1&userid=2">解除精华</a><BR><a href="admin_postings.asp?action=islockpage_a&BoardID=9&replyID=132&ID=35&star=1&userid=2">单贴屏蔽</a><BR><a href="admin_postings.asp?action=RewardMoney&BoardID=9&replyID=132&ID=35&star=1" title="好评或差评,可奖励或扣除该贴用户相关分值">帖子评价</a><BR></div></div><a name="133" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"></a><table cellPadding="5" cellSpacing="1" align="center" class="tableborder1" style="table-layout:fixed;word-break:break-all" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<tr>
<td class="tablebody2" valign="top" width="175">
<table width="100%" cellpadding="4" cellspacing="0">
<tr>
<td width="*" valign="middle" style="filter:glow(color=#9898BA,strength=2)"> <script type="text/javascript" language="javascript">document.write (usercolor('1','XiaoLin'));</script></td>
<td width="25" valign="middle"><img src="Skins/Default/ofMale.gif" alt="帅哥哟,离线,有人找我吗?"></td>
<td width="16" valign="middle"><script type="text/javascript" language="javascript">document.write (astro('1982-10-12'));</script></td>
</tr>
</table> <img src="UploadFace/13_20065192014050092.jpg" width="110" height="120"><br> <img src="Skins/Default/star/level20.gif"><br> 头衔:Rookie<br> 等级:管理员<br> 文章:394<br> 积分:2603<br> 注册:2005-09-13</td>
<td class="tablebody2" valign="top" height="100%">
<table width="100%" height="30">
<tr>
<td width="*" align="absmiddle"><a href="messanger.asp?action=new&touser=XiaoLin" target="_blank"><img src="Skins/Default/message.gif" border="0" alt="给XiaoLin发送一个短消息" align="absmiddle"></a> <a href="friendlist.asp?action=addF&myFriend=XiaoLin" target="_blank"><img src="Skins/Default/friend.gif" border="0" alt="把XiaoLin加入好友" align="absmiddle"></a> <a href="dispuser.asp?id=13" target="_blank"><img src="Skins/Default/profile.gif" border="0" alt="查看XiaoLin的个人资料" align="absmiddle"></a> <a href="query.asp?stype=1&nSearch=3&keyword=XiaoLin&BoardID=9&SearchDate=ALL" target="_blank"><img src="Skins/Default/find.gif" border="0" alt="搜索XiaoLin在的所有贴子" align="absmiddle"></a> <a href="mailto:siwenzi@163.com"><img alt="点击这里发送电邮给XiaoLin" border="0" src="Skins/Default/email.gif" align="absmiddle"></a> <a href="post.asp?action=re&BoardID=9&replyID=133&id=35&star=1&reply=true"><img src="Skins/Default/reply.gif" border="0" alt="引用回复这个贴子" align="absmiddle"></a> <a href="post.asp?action=re&BoardID=9&replyID=133&id=35&star=1"><img src="Skins/Default/reply_a.gif" border="0" alt="回复这个贴子" align="absmiddle"></a></td>
<td width="70" align="right">第 <font color="#FF0000">2</font> 楼</td>
</tr>
<tr>
<td height="1" colspan="3" class="singleborder"></td>
</tr>
<tr>
<td height="2" colspan="3"></td>
</tr>
</table>
<table border="0" align="center" width="95%" height="85%" style="table-layout:fixed;word-break:break-all">
<tr>
<td width="*" height="100%" style="font-size:9pt;line-height:12pt" valign="top"><img src="Skins/Default/topicface/face1.gif" border="0" alt="发贴心情" align="absmiddle"> <B></B><BR><P>已阅^x^</P><P>ugly的代码很精致啊</P><img src=Skins/Default/emot/em02.gif border=0 align=middle onmousewheel="return bbimg(this)" onload="javascript:if(this.width>screen.width-500)this.style.width=screen.width-500;"></td>
</tr>
<tr><td>
</td></tr>
</table>
</td>
</tr>
<tr>
<td class="tablebody2" valign="middle" align="center" width="175"><img align="absmiddle" border="0" src="Skins/Default/ip.gif" alt="发贴IP已设置保密"> 2005-10-02 21:33</td>
<td class="tablebody2" valign="middle" width="*">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td valign="middle" align="left" width="*"> </td>
<td nowarp="true" valign="bottom" width="130" align="left"></td>
<td valign="middle" width="170" align="right"><a href="post.asp?action=edit&BoardID=9&replyID=133&ID=35&star=1"><img align="absmiddle" border="0" src="Skins/Default/edit.gif"></a> <a class="ImgOnclick" onMouseOver="showmenu(event,'','Menu_1');"><img align="absmiddle" border="0" src="Skins/Default/topicmanage.gif"></a> <a href="#top"><img align="absmiddle" border="0" src="Skins/Default/p_up.gif"></a></td>
<td valign="middle" align="left">
</td>
</tr>
</table>
</td>
</tr>
</table>
<div class="Menu_popup" id="Menu_1" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<div class="menuitems"><a href="TopicOther.asp?t=6&BoardID=9&id=35&ReplyID=133" title="向管理员举报该贴">举报帖子</a><BR><a href="admin_postings.asp?action=dele_a&BoardID=9&replyID=133&ID=35&star=1&userid=13">删除单贴</a><BR><a href="admin_postings.asp?action=copy_a&BoardID=9&replyID=133&ID=35&star=1&userid=13">复制贴子</a><BR><a href="admin_postings.asp?action=isbest_a&BoardID=9&replyID=133&ID=35&star=1&userid=13">加为精华</a><BR><a href="admin_postings.asp?action=islockpage_a&BoardID=9&replyID=133&ID=35&star=1&userid=13">单贴屏蔽</a><BR><a href="admin_postings.asp?action=RewardMoney&BoardID=9&replyID=133&ID=35&star=1" title="好评或差评,可奖励或扣除该贴用户相关分值">帖子评价</a><BR></div></div><a name="135" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"></a><table cellPadding="5" cellSpacing="1" align="center" class="tableborder1" style="table-layout:fixed;word-break:break-all" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<tr>
<td class="tablebody1" valign="top" width="175">
<table width="100%" cellpadding="4" cellspacing="0">
<tr>
<td width="*" valign="middle" style="filter:glow(color=white,strength=2)"> <script type="text/javascript" language="javascript">document.write (usercolor('9','玉凌风'));</script></td>
<td width="25" valign="middle"><img src="Skins/Default/ofMale.gif" alt="帅哥哟,离线,有人找我吗?"></td>
<td width="16" valign="middle"><script type="text/javascript" language="javascript">document.write (astro(''));</script></td>
</tr>
</table> <img src="Images/userface/image1.gif" width="32" height="32"><br> <img src="Skins/Default/star/level0.gif"><br> 等级:新手上路<br> 文章:34<br> 积分:299<br> 注册:2005-09-21</td>
<td class="tablebody1" valign="top" height="100%">
<table width="100%" height="30">
<tr>
<td width="*" align="absmiddle"><a href="messanger.asp?action=new&touser=%D3%F1%C1%E8%B7%E7" target="_blank"><img src="Skins/Default/message.gif" border="0" alt="给玉凌风发送一个短消息" align="absmiddle"></a> <a href="friendlist.asp?action=addF&myFriend=%D3%F1%C1%E8%B7%E7" target="_blank"><img src="Skins/Default/friend.gif" border="0" alt="把玉凌风加入好友" align="absmiddle"></a> <a href="dispuser.asp?id=38" target="_blank"><img src="Skins/Default/profile.gif" border="0" alt="查看玉凌风的个人资料" align="absmiddle"></a> <a href="query.asp?stype=1&nSearch=3&keyword=%D3%F1%C1%E8%B7%E7&BoardID=9&SearchDate=ALL" target="_blank"><img src="Skins/Default/find.gif" border="0" alt="搜索玉凌风在的所有贴子" align="absmiddle"></a> <a href="mailto:vipyulf@163.com"><img alt="点击这里发送电邮给玉凌风" border="0" src="Skins/Default/email.gif" align="absmiddle"></a> <a href="post.asp?action=re&BoardID=9&replyID=135&id=35&star=1&reply=true"><img src="Skins/Default/reply.gif" border="0" alt="引用回复这个贴子" align="absmiddle"></a> <a href="post.asp?action=re&BoardID=9&replyID=135&id=35&star=1"><img src="Skins/Default/reply_a.gif" border="0" alt="回复这个贴子" align="absmiddle"></a></td>
<td width="70" align="right">第 <font color="#FF0000">3</font> 楼</td>
</tr>
<tr>
<td height="1" colspan="3" class="singleborder"></td>
</tr>
<tr>
<td height="2" colspan="3"></td>
</tr>
</table>
<table border="0" align="center" width="95%" height="85%" style="table-layout:fixed;word-break:break-all">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -