●●●●●请问const vector< int > *pvec, const vector< int > ivec的区别 性能差异●●●●●

hertcloud 2005-10-03 10:39:35
//下面的函数中 使用 const vector< int > *pvec, const vector< int > ivec
中的那个性能较好呢?为什么呢?
void even_odd( const vector< int > *pvec, const vector< int > ivec, vector< int > *pvec_even, vector< int > *pvec_odd )
{
vector< int >::const_iterator c_iter = pvec->begin();
vector< int >::const_iterator c_iterEnd = pvec->end();

vector< int >::const_iterator i_iter = ivec.begin();
vector< int >::const_iterator i_iterEnd = ivec.end();

for ( ; c_iter != c_iterEnd; c_iter++ )
{
if ( *c_iter % 2 )
{
pvec_odd->push_back( *c_iter );
}
else
{
pvec_even->push_back( *c_iterEnd );
}
}
for ( ; i_iter != i_iterEnd; i_iter++)
{
if ( *i_iter % 2 )
{
pvec_odd->push_back( *i_iter );
}
else
{
pvec_even->push_back( *i_iter );
}
...全文
388 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pappGG 2005-10-04
  • 打赏
  • 举报
回复
同意 antter(JiangMiao|www.sssdf.com)

推荐用引用

对象肯定不好
我这里经常用到一个容器会占几兆甚至几十兆内存,用一次复制个对象......谁受得了

指针嘛,不需要用的地方尽量不用,习惯,呵呵
xlsue 2005-10-04
  • 打赏
  • 举报
回复
to K():
对"指针要显式的调用delete 销毁"说法,
不同意!
antter 2005-10-03
  • 打赏
  • 举报
回复
两个都不推荐
后者要经过一个拷贝,很费时。

推荐使用const vector<int>& vec
healer_kx 2005-10-03
  • 打赏
  • 举报
回复
性能无诧异的,(些许的诧异根本不是重点所在)
而整个重点在于vector的模板参数,是放置对象好,还是对象的指针好。

而且绝大多数的情况下,我推荐使用vectoe<T> vecT;而不是指针。
K 2005-10-03
  • 打赏
  • 举报
回复
区别:
一个是指针,一个是变量
指针要显式的调用delete 销毁
函数传入变量会有一个拷贝的过程(看C,或者C++关于拷贝构造函数).
传指针或者引用会省去拷贝构造这一步
hertcloud 2005-10-03
  • 打赏
  • 举报
回复
}
}
//少了2个}
补上 顺便顶下
xiaolizi 2005-10-03
  • 打赏
  • 举报
回复
有关vector<T>中的T是对象还是对象指针,这个问题就像类似问:青菜和萝卜哪个更有营养一样?
存在即合理,就看应用的场合。一般而言比较复杂的对象,同时又有自定义的构造函数或者赋值函数,建议使用指针,而对于是int等内部定义的类型,谁还会去使用指针呢?

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧