返回信息流自己论文项目,写的代码,里面用的都是vector<Object>, size=100;
程序中有:100*vector<Object>个这样子的vector。问题是运行结果很慢。
我想知道,这样大篇幅使用vector,会导致程序变慢吗?
另外,如果vector<Object>变为动态数组呢?会不会便快些?
大家的经验是什么?
这是一条镜像帖。来源:北邮人论坛 / cpp / #79893同步于 2014/5/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
想知道vector、数组谁快?
t330
2014/5/23镜像同步26 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 gaoweiwei 的大作中提到: 】
: vector内部不就是数组吗?
确实,不过vector实现机制是模板嘛,仿佛在哪里看到,在某种情况下,vector会变慢的,因为要经常resize
答案是几乎一样快。
程序运行慢是楼主自己使用问题,
楼主可以与其考虑动态数组,不如看看vector的源码实现就知道如何正确使用了。
你如果知道数组的最大长度多少就直接在初始化时候指定大小,不要每次push_back去导致内存频繁分配。
如果要频繁删除元素请不要用vector。
至于object是传指针还是对象,这性能问题无关vector。
发自「佳邮」
【 在 bswgd 的大作中提到: 】
: 答案是几乎一样快。
: 程序运行慢是楼主自己使用问题,
: 楼主可以与其考虑动态数组,不如看看vector的源码实现就知道如何正确使用了。
: ...................
我想问下,如果我知道vector大小,我可以这样:
vector<Object> vct(n,-1);
vct[i] = x;
这样子是不是比下面要快些 :
vector<Object> vct;
vct.push_back(x);
vct.push_back(x);
.....
.....
你是这个意思吗?
原理是push_back会重分配内存?