用vector代替数组,有没有必要

 我来答
可爱小不点year
2017-09-02 · TA获得超过803个赞
知道小有建树答主
回答量:859
采纳率:89%
帮助的人:783万
展开全部
没必要。
用new动态分配数组,需要时时刻刻记住delete,很容易造成memory leak。使用vector和string则消除了这个负担,因为它们有自己的内存管理,在它们的析构函数中会自动释放内存。
通常情况下用vector代替动态数组,如果要存储的元素类型是字符类型时使用string。
所有适合于序列容器的STL算法,vector和string都可以使用。所以使用vector和string会带来更多的便利。
许多string的实现采用了“引用计数”,用于消除不必要的内存分配和不必要的字符拷贝。但这样的实现在多线程环境中,需要注意一下因支持线程安全而导致的性能问题。
如果所使用的string以“引用计数”方式实现,同时又运行在多线程环境中,并因此影响了程序效率。考虑以下三种选择:(1)是否可以通过改变某个预处理变量禁用引用计数。(2)寻找另外一个不使用“引用计数”实现的string。(3)使用vector<char>代替string,vector不允许使用引用计数,所以不会有多线程性能问题。
VC编译器自2005版本之后,大概是考虑到线程安全问题,string均没有以“引用计数”方式实现。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式