游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4559|回复: 8

分解STL

[复制链接]

15

主题

83

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2004-4-14 08:07:00 | 显示全部楼层 |阅读模式
说起STL,没有谁不知道,但是使用他人不是很多,用得好的人更是不多,理解他的人就更少了,这里我不讲源代码,他们实际上也帮不了我们理解STL,因为源代码永远是让人昏昏欲睡的东西。我这里只讲讲STL的组成和各部分之间的关系,这样可能会更加有效。

STL实际上是一个算法库,他由以下几个部分组成:

1。容器,适配器
2。迭代器
3。函数对象
4。算法

各部分的功能:

1。容器,适配器:无差别的储存对象或者对象指针,引用
2。迭代器:通过各种方式访问无差别的访问容器的里的内容
3。函数对象:对算法进行扩充,并定义我们自己的操作
4。算法:一些通用的无差别的算法

各部分的联系:

我们使用函数对象来扩充算法和自定义我们的操作---->算法和我们自定义的操作通过操纵迭代器来实现功能--->迭代器通过访问容器来返回我们需要的对象及其指针,引用。

实例:

class A   
{
        int m_i;
public:
        A() : m_i(0) { }
        void Add() { m_i ++; }
};

list<A*> m_list;  //容器

struct Add_A  //函数对象
{
        void operator()(A* p) { p->Add(); }
};

m_list.push_back(new A);  //对象

for_each(m_list.begin(), m_list.end(), Add_A());  //算法

15

主题

83

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2004-4-14 10:37:00 | 显示全部楼层

Re:分解STL

那你认为什么才是分解STL呢?

15

主题

83

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2004-4-14 14:43:00 | 显示全部楼层

Re:分解STL

我只是想告诉那些刚接触STL的朋友,STL不过就是上面那些东西的组合而已,是很简单的,不要怕它。

0

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-4-14 18:00:00 | 显示全部楼层

Re:分解STL

如果不搞透stl的内存分配,恐怕用stl作高效率的游戏只是一场噩梦。同时,stl本身不支持多线程。还有,在dll输出的时候,会有一大堆warning等着你。呵呵,事情多着呢。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-14 20:27:00 | 显示全部楼层

Re:分解STL

泛泛之谈

15

主题

83

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2004-4-15 08:02:00 | 显示全部楼层

Re:分解STL

晕~~~

15

主题

83

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2004-4-15 08:09:00 | 显示全部楼层

Re: Re:分解STL

robin_yao: Re:分解STL

如果不搞透stl的内存分配,恐怕用stl作高效率的游戏只是一场噩梦。同时,stl本身不支持多线程。还有,在dll输出的时候,会有一大堆warning等着你。呵呵,事情多着呢。

内存分配:最简单的方法就是用SGI版
多线程安全:这是程序员的责任而不是STL的
在DLL里输出:这是最愚蠢的事情之一

15

主题

83

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2004-4-15 09:47:00 | 显示全部楼层

Re:分解STL

哦,我说的是输出类是最愚蠢的。不是说接口。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-4-15 14:40:00 | 显示全部楼层

Re:分解STL

看来兄弟很喜欢泛型技术,支持!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 02:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表