游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5112|回复: 16

stl为何没有这样的函数?

[复制链接]

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2003-12-28 10:21:00 | 显示全部楼层 |阅读模式
不管是push_back(),还是insert()等等,都要有一个实例作为参数。所以要用一些临时对象,像这样push_back( foo() )。产生了一个临时对象。为何不设计一个函数push_back_new(),让自己产生实例。
我想可能是因为有些类初始化时要一些参数。看来stl为了通用性,牺牲了一部分性能。

23

主题

515

帖子

552

积分

高级会员

Rank: 4

积分
552
发表于 2003-12-28 11:07:00 | 显示全部楼层

Re:stl为何没有这样的函数?

?????
谁说的?你什么意思?


vector<int> iVer;
iVer.push_back(100);


这样不算吗?

烦请问一下
你……学STL多长时间……

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2003-12-28 11:36:00 | 显示全部楼层

Re:stl为何没有这样的函数?

呵呵,我想你误解我的意思了。我主要指类。
比如:
class A;

Vecter <A> vecA;

vecA.push_back( A() );
//这就多了一个临时对象。先构造一个temp_A,再用copy construct构造vecA中的A,再把temp_A解析.

我的意思是为何不能直接让vecA建立对象。



193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2003-12-28 12:11:00 | 显示全部楼层

Re:stl为何没有这样的函数?

Vecter
是Vector吧
push_back_new()这个函数是算是有的啊
不过不是这个名字
如果你用
class A;

Vector <A> vecA;

vecA.resize(vecA.size()+1 );//这样的话就用构造函数构造一个新的A;
vecA.resize(vecA.size()+1 );//再用拷贝函数构造一个新的A;
vecA.resize(vecA.size()+12);//一下子构造12个
我试验过了,绝对没有临时对象的!
还有vecA.reserve(int)是用来指定储存空间大小的。但是不初始化。

21

主题

86

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2003-12-28 13:27:00 | 显示全部楼层

Re:stl为何没有这样的函数?

好,原来可以这样,谢谢。这样比较好,copy construct不大可靠。
不过这样只能加在最后。

3

主题

56

帖子

56

积分

注册会员

Rank: 2

积分
56
发表于 2003-12-30 08:07:00 | 显示全部楼层

Re:stl为何没有这样的函数?

copy constructor 不可靠???

怎么不可靠?

在vector中使用的类型必须要有copy constructor。

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2003-12-30 08:54:00 | 显示全部楼层

Re:stl为何没有这样的函数?

这不是STL的错。
ter <A> vecA;

vecA.push_back( A() );

这个是你自己使用不当,
一般只要稍微大一点的类,就不对用vector<A>
而只会用vector<A*>或者是std::list<A*>存放的是一个指针。特别是构造和构析函数做了一些特别的事情尤其如此。

90

主题

797

帖子

833

积分

高级会员

论坛版主

Rank: 4

积分
833
QQ
发表于 2003-12-30 09:54:00 | 显示全部楼层

Re:stl为何没有这样的函数?

指针,vector< A *> xxxx;
一般都用这个。

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2003-12-30 10:52:00 | 显示全部楼层

Re:stl为何没有这样的函数?

我觉得可以用智能指针贮存到vector,省着到时候还要delete

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2003-12-30 14:56:00 | 显示全部楼层

Re:stl为何没有这样的函数?

只能指针时给懒人用的,真正的程序员是不会用它的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-25 00:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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