<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0048)http://www.vckbase.com/document/viewdoc/?id=1461 -->
<HTML><HEAD><TITLE>走近 STL - VC知识库文章</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content=stl name=keywords>
<META content=stl name=description><LINK href="走近 STL - VC知识库文章.files/style.css"
rel=stylesheet>
<META content="MSHTML 6.00.2900.5659" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR bgColor=#a0d39b>
<TD width="14%" height=78> <A href="http://www.vckbase.com/"><IMG
height=13 src="走近 STL - VC知识库文章.files/vckcom.gif" width=109
border=0></A></TD>
<TD align=left width="76%"><!--script type="text/javascript">
google_ad_client = "pub-4159669282587342";
/* 728x90, 创建于 09-4-19 */
google_ad_slot = "4947706540";
google_ad_width = 728;
google_ad_height = 90;
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script--><A href="http://www.clayui.com/" target=_blank><IMG height=60
alt=www.clayui.com src="走近 STL - VC知识库文章.files/clayui.jpg" width=468
border=0 longDesc=http://www.clayui.com></A></TD>
<TD vAlign=bottom align=right height=78><IMG height=27
src="走近 STL - VC知识库文章.files/earch.gif" width=89></TD></TR>
<TR bgColor=#eeeeee>
<TD colSpan=2><FONT class=small color=#333333>::</FONT><A
href="http://www.vckbase.com/"><FONT color=black><SPAN
class=small>首页</SPAN></FONT></A> >> <A
href="http://www.vckbase.com/document"><FONT color=black><SPAN
class=small>文档中心</SPAN></FONT></A> >> <A
href="http://www.vckbase.com/document/journal"><SPAN class=small><FONT
color=black>在线杂志</FONT></SPAN></A> >> <A
href="http://www.vckbase.com/document/listdoc.asp?sclsid=102"><SPAN
class=small><FONT color=black>STL</FONT></SPAN></A></TD>
<TD class=small align=right width="10%">[ <A
href="http://www.vckbase.com/document/journal/redir.asp?journal=42"><SPAN
class=small><FONT color=black>在线杂志 第42期</FONT></SPAN></A> ]
</TD></TR></TBODY></TABLE>
<DIV align=center><BR><IFRAME id=adIFrame1 marginWidth=0 frameSpacing=0
marginHeight=0 src="走近 STL - VC知识库文章.files/uipower.htm" frameBorder=0 width=990
scrolling=no height=136></IFRAME></DIV><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD background="走近 STL - VC知识库文章.files/dotline2.gif"
height=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width=40 height=74></TD>
<TD vAlign=top width=* height=74>
<FORM name=form2 action=/SYS/script/find.asp method=post>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><SPAN id=docinfo>[ <FONT color=#009900>原创文档</FONT> 本文适合中级读者
已阅读47437次 ]</SPAN></TD>
<TD align=right><INPUT class=rect maxLength=20 size=10 name=keyword>
<SELECT class=rect name=gclsid> <OPTION value=100
selected>文档</OPTION> <OPTION value=200>代码</OPTION> <OPTION
value=400>工具</OPTION></SELECT> <INPUT type=image height=15 width=21
src="走近 STL - VC知识库文章.files/go.gif" align=absMiddle border=0
name=imageField> </TD></TR></TBODY></TABLE></FORM>
<DIV align=center></DIV><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<P align=center><B>走近 STL<BR></B><BR>作者:<A
href="mailto:taohanjunjiang@yahoo.com.cn">陶汉军</A><BR>中国石油大学
计算机02-2</P>
<P><A
href="http://www.vckbase.com/code/downcode.asp?id=2680">下载源代码</A><BR><BR> 本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者。这实际上是我学习STL的一篇笔记,老鸟就不用看了。<BR><BR><B>什么是泛型程序设计</B><BR> 我们可以简单的理解为:使用模板的程序设计就是泛型程序设计。就像我们我们可以简单的理解面向对象程序设计就是使用虚函数的程序设计一样。<BR><BR><B>STL是什么</B>
<BR> 作为一个C++程序设计者,STL是一种不可忽视的技术。Sandard Template Library
(STL):<BR>标准模板库,更准确的说是 C++ 程序设计语言标准模板库。学习过MFC的人知道,MFC是微软公司创建的 C++
类库。而与之类似的是 STL 是模板库,只不过 STL 是 ANSI/ISO 标准的一部分,而 MFC
只不过是微软的一个产品而已。也就是说STL是所有C++编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL是一种标准,也就是说对所有的编译器来说,提供给C++程序设计者的接口都是一样的。也就是说同一段STL代码在不同编译器和操作系统平台上运行的结果都是相同的,但是底层实现可以是不同的。
令人兴奋的是,STL的使用者并不需要了解它的底层实现。
试想一下,如果我们有一把能打开所有锁的钥匙,那将是多么令人疯狂啊。嘎嘎。这个歪梦我做了20多年鸟。<BR> STL的目的是标准化组件,这样你就不用重新开发它们了。你可以仅仅使用这些现成的组件。STL现在是C++的一部分,因此不用额外安装什么。它被内建在你的编译器之内。<BR><BR><B>为什么我们需要学习STL</B></P>
<UL>
<LI>STL是 C++的ANSI/ISO
标准的一部分,可以用于所有C++语言编译器和所有平台(Windows/Unix/Linux..)。STL的同一版本在任意硬件配置下都是可用的;
<LI>STL
提供了大量的可复用软件组织。例如,程序员再也不用自己设计排序,搜索算法了,这些都已经是STL的一部分了。嘎嘎,有意思吧;
<LI>使用STL 的应用程序保证了得到的实现在处理速度和内存利用方面都是高效的,因为STL设计者们已经为我们考虑好了;
<LI>使用STL编写的代码更容易修改和阅读,这是当然的鸟。因为代码更短了,很多基础工作代码已经被组件化了;
<LI>使用简单,虽然内部实现很复杂; </LI></UL>
<P> 虽然,STL的优点甚多,但是STL的语法实在令初学者人头疼,许多人望而却步。可是STL是每个C++程序设计者迟早都要啃的一块骨头。因为越来越多的C++代码是用STL编写的,看不懂麻烦就大鸟。越来越多的人在用STL,不懂就无法和别人一起合作了。好事多磨嘛,早点学习早点解脱。<BR><BR>下面让我们来看几段代码吧:(你觉得头疼就不要看了)<BR></P><PRE>//stl_cpp_1.cpp
#include <iostream>
double mean(double *array, size_t n)
{
double m=0;
for(size_t i=0; i<n; ++i){
m += array[i];
}
return m/n;
}
int main(void)
{
double a[] = {1, 2, 3, 4, 5};
std::cout<<mean(a, 5)<<std::endl; // will print 3
return 0;
}
</PRE>好懂吧,除了那个std有点让人不舒服以外?这是一段普通的没有使用STL的C++代码。再看下面一段: <PRE>//stl_cpp_2.cpp
#include <vector>
#include <iostream>
int main(void)
{
std::vector<double> a;
std::vector<double>::const_iterator i;
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
a.push_back(5);
for(i=a.begin(); i!=a.end(); ++i){
std::cout<<(*i)<<std::endl;
}
return 0;
}
</PRE> 如果你真的没有接触过STL的话,你会问,呀,vector
是啥呀?我会告诉你,那是一排美女。嘎嘎。这可不是个比喻,表想歪鸟。这是一段纯种的STL代码,看到尖括号了吧,知道那是模板了吧。看到a.push_back(5),a.begin(),a.end()你不感觉奇怪么?可是我们并没有定义这些函数啊。
<PRE>//stl_cpp_3.cpp
#include <vector>
#include <iostream>
int main(void)
{
std::vector<int> q;
q.push_back(10);
q.push_back(11);
q.push_back(12);
std::vector<int> v;
for(int i=0; i<5; ++i){
v.push_back(i);
}
std::vector<int>::iterator it = v.begin() + 1;
it = v.insert(it, 33);
v.insert(it, q.begin(), q.end());
it = v.begin() + 3;
v.insert(it, 3, -1);
it = v.begin() + 4;
v.erase(it);
it = v.begin() + 1;
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
VC++ STL 学习资料 (112个子文件)
toc.css 1KB
style.css 1KB
style.css 1KB
style.css 1KB
style.css 1KB
style.css 1KB
style.css 1KB
style.css 1KB
MFC_in_ATL_03.gif 5KB
MFC_in_ATL_05.gif 4KB
MFC_in_ATL_02.gif 4KB
MFC_in_ATL_01.gif 3KB
MFC_in_ATL_04.gif 2KB
jlogo.gif 2KB
earch.gif 1KB
earch.gif 1KB
earch.gif 1KB
earch.gif 1KB
earch.gif 1KB
earch.gif 1KB
earch.gif 1KB
vckcom.gif 1011B
vckcom.gif 1011B
vckcom.gif 1011B
vckcom.gif 1011B
vckcom.gif 1011B
vckcom.gif 1011B
vckcom.gif 1011B
go.gif 935B
go.gif 935B
go.gif 935B
go.gif 935B
go.gif 935B
go.gif 935B
go.gif 935B
bs.gif 164B
bs.gif 164B
bo.gif 153B
paragraph.gif 148B
dc.gif 132B
dc.gif 132B
doc2.gif 72B
doc2.gif 72B
doc2.gif 72B
doc2.gif 72B
doc2.gif 72B
doc2.gif 72B
doc2.gif 72B
toplogo.gif 63B
toplogo.gif 63B
toplogo.gif 63B
toplogo.gif 63B
toplogo.gif 63B
toplogo.gif 63B
toplogo.gif 63B
rec1.gif 56B
rec1.gif 56B
rec1.gif 56B
rec1.gif 56B
rec1.gif 56B
rec1.gif 56B
rec1.gif 56B
dotline2.gif 43B
dotline2.gif 43B
dotline2.gif 43B
dotline2.gif 43B
dotline2.gif 43B
dotline2.gif 43B
dotline2.gif 43B
走近 STL - VC知识库文章.htm 57KB
toc.htm 30KB
2010新版STL修订内容(VC2010)(1) - VC知识库文章.htm 23KB
使用 multimap 库创建重复键关联容器 - VC知识库文章.htm 14KB
viewdoc.htm 12KB
一步一步学STL标准模板库 - VC知识库文章.htm 12KB
再谈“在STL列表(Lists)中插入不同类型的对象” - VC知识库文章.htm 11KB
loadtree.htm 10KB
如何在Dll中导出STL类 - VC知识库文章.htm 10KB
top.htm 3KB
stat.htm 2KB
stat.htm 2KB
stat.htm 2KB
stat.htm 2KB
stat.htm 2KB
stat.htm 2KB
stat.htm 2KB
在MFC工程中添加ATL.htm 2KB
uipower.htm 906B
uipower.htm 906B
uipower.htm 906B
uipower.htm 906B
uipower.htm 906B
uipower.htm 906B
uipower.htm 906B
clayui.jpg 31KB
clayui.jpg 31KB
clayui.jpg 31KB
clayui.jpg 31KB
clayui.jpg 31KB
clayui.jpg 31KB
共 112 条
- 1
- 2
资源评论
gates007
- 粉丝: 5
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功