社区
C++ 语言
帖子详情
为什么string比char快?
dtgdf2006
2010-07-25 04:30:00
我记得《c++primer》说到string比char字符快一些,一开始我还不信,自己测试了一下,结果很让我吃惊,string比char字符快了38倍!《c++primer题解》的解释居然是char比string快,很明显这是臆断,哪位高手能解释一下为什么string比char快。
...全文
2297
120
打赏
收藏
为什么string比char快?
我记得《c++primer》说到string比char字符快一些,一开始我还不信,自己测试了一下,结果很让我吃惊,string比char字符快了38倍!《c++primer题解》的解释居然是char比string快,很明显这是臆断,哪位高手能解释一下为什么string比char快。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
120 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
syflyhua
2011-11-30
打赏
举报
回复
被这么多人鄙视,哎~~~~
奋斗的小小小小鸟
2010-08-17
打赏
举报
回复
一台没装VC的电脑飞过。。。。
benbshmily
2010-08-02
打赏
举报
回复
[Quote=引用 116 楼 r11222 的回复:]
jackyjkchen是技术牛人,我一直是jackyjkchen的回帖都会细细拜读,但 不可否认, jackyjkchen 回答问题的态度比其他大牛稍差, 差的意思是, 回答快狠准, 但通俗的说, 比较拽,呵呵
但拽也有拽的实力.jackyjkchen对技术的执著是每个人都知道的。
另外 ,三路快排不一定能提升性能 ,如果你要排序的数组都是不一样的数, 反而比普通快排要慢
我觉……
[/Quote]
评价得比较客观。jackyjkchen那句话确实有那么一点不妥。并没有多少人都能写出比标准快几十倍的算法。毕竟标准算法是大牛们长年积累下来的。
skyaspnet
2010-08-02
打赏
举报
回复
学习。。。
r11222
2010-08-01
打赏
举报
回复
jackyjkchen是技术牛人,我一直是jackyjkchen的回帖都会细细拜读,但 不可否认, jackyjkchen 回答问题的态度比其他大牛稍差, 差的意思是, 回答快狠准, 但通俗的说, 比较拽,呵呵
但拽也有拽的实力.jackyjkchen对技术的执著是每个人都知道的。
另外 ,三路快排不一定能提升性能 ,如果你要排序的数组都是不一样的数, 反而比普通快排要慢
我觉得 ,标准库是一些技术牛人多年研究出来, 他的做法肯定有他们的道理,麻木地用自己的算法代替标准
库,得到的结果不一定都是好的,但 ,只要你知道自己的需要,知道如何实现,自己去写一个算法代替标准库
也是好的, 就拿qsort举例 , qsort 为了通用性 , 增加了一个 compare函数,但 如果你知道,你的项目只需要
排序整数,那你还有必要用标准qsort 吗? 函数的调用必然会增加开销, 好了,这都是我的想法,不对的请
更正。
野鬼灬
2010-07-31
打赏
举报
回复
什么????string比char快?
billanking
2010-07-31
打赏
举报
回复
楼主,clock转圈了吧。
barrons
2010-07-31
打赏
举报
回复
看牛人就技术问题发表意见就是爽
onpduo
2010-07-31
打赏
举报
回复
不一般那,这么多回帖,LZ很棒~
sevencat
2010-07-31
打赏
举报
回复
就拿std::string来说,获得字符串的长度比char *要快,因为一般std::string的某个成员变量保存了这一长度。但char *就需要strlen去获取。
但strcat有时候会比std::string快,因为std::string在append的时候有可能会重新分配内存,而strcat则不需要。
strdup,strcpy,strcmp有可能会比std::string慢,同样是因为std::string预知长度的原因。
其实这些都意义不大。只有当这个影响到你的程序的时候。
在vc2005和以上,std::string在16个字符以内的话不另外分配内存,在小字符串的时候会明显加快速度。
sevencat
2010-07-31
打赏
举报
回复
程序慢95%的情况是整个结构不好,而不是单个类的问题。
一般只有5%的地方需要对类和函数进行特别优化。
sevencat
2010-07-31
打赏
举报
回复
有一种人:
这个好,那个不好,这个快,那个慢。
有种人:
这个慢在这个地方,但这个地方比较方便,有的虽然这种操作比较快,但那个操作会有问题。
另一种人:
你要实现什么功能,对性能有什么要求,我帮你找一个,没有的话我来写一个。
dtgdf2006
2010-07-31
打赏
举报
回复
[Quote=引用 10 楼 jackyjkchen 的回复:]
看来楼主适合string,因为string就是给那些自己写算法会比标准库慢几十倍的人用的。
[/Quote]
我承认我的算法是比标准库的慢,但是我不认同string 是给那些自己写算法会比标准库慢几十倍的人用的,我认为string 是给所有使用C++的人用的,如果代码的执行效率比代码健壮性,可维护性和代码的开发效率都重要的话我们为什么还要用C++,那还不如用C和汇编,我想架构师是不会允许char指针满天飞的。再说Boost库的函数的参数基本上都是basic_string<>,MFC只用CString,微软的Greta也依赖basic_string<>,你能说这些类库的作者写算法比标准库慢几十倍吗?
linsen_519
2010-07-30
打赏
举报
回复
[Quote=引用 106 楼 jackyjkchen 的回复:]
扯了扯了,我还给组员做绩效,没时间和你聊家常了。
只是希望你记住我说的话(这么激烈的对话,记不住是白痴)
至少你火爆的脾气以及爱用红色字体像我,哈哈,回见。
[/Quote]
我只记牛人说的话~
哎~ 午睡泡汤了
jackyjkchen
2010-07-30
打赏
举报
回复
扯了扯了,我还给组员做绩效,没时间和你聊家常了。
只是希望你记住我说的话(这么激烈的对话,记不住是白痴)
至少你火爆的脾气以及爱用红色字体像我,哈哈,回见。
linsen_519
2010-07-30
打赏
举报
回复
[Quote=引用 104 楼 jackyjkchen 的回复:]
如果你是大一或大二,那么现在努力来得及,当时的我不比你强,如果你是大四或者工作了……对不你,你绝对的悲剧了,人在过了二十岁之后往往会失去潜力,归根结底,就是吃不得苦,认不了真。
愿意听也罢,不听也罢,你是死是活,是富是穷,与我没有关系;
我似乎从你的口气中听出来你的父母辈也在为你的懒惰而担心(否则那个“娘们”是的是谁),唉,这与我就无关了
[/Quote]
看~ 又开始猜想别人的信息了~你跟哥哥玩“哥德巴赫猜想呢?!”
先猜想一翻~ 然后自己论证自己的猜想~ 你不会是这样学C++的吧? 不对~ 是C
别为古人担忧好么?
我还是给你那些话:
你真不用介绍你的信息~~ 没情趣听~
更不用说什么勤奋不勤奋的大道理~ ~ 因为那都是娘们常说的话~
你更不应该猜想别人是什么样的人~去猜猜明天的彩票号是多少(那更有意义)
你说的以上人物确实是大牛~ 尤其是飞雪我服~
可你不能和他们相提并论~这让我觉得恶心~ 因为他们都很谦虚和低调~
他们只会说这门技术我掌握到什么程度~ 而不会轻易的去贬低一门技术~
jackyjkchen
2010-07-30
打赏
举报
回复
如果你是大一或大二,那么现在努力来得及,当时的我不比你强,如果你是大四或者工作了……对不你,你绝对的悲剧了,人在过了二十岁之后往往会失去潜力,归根结底,就是吃不得苦,认不了真。
愿意听也罢,不听也罢,你是死是活,是富是穷,与我没有关系;
我似乎从你的口气中听出来你的父母辈也在为你的懒惰而担心(否则那个“娘们”是的是谁),唉,这与我就无关了
linsen_519
2010-07-30
打赏
举报
回复
[Quote=引用 102 楼 jackyjkchen 的回复:]
引用 101 楼 linsen_519 的回复:
引用 99 楼 jackyjkchen 的回复:
想本区的Laoden、mstlq、飞雪等大牛,在他们身上我没看出来有什么天赋,恰恰看到的是一种勤奋。
尤其是laoden,高中物理教师,根本不是业内人士,但对于技术的理解和掌握超过了99%的“程序员”
笨鸟可以先飞,懒人无可救药。
作为应届本科生的我,只是比别人勤奋那么一……
[/Quote]
别人勤奋不勤奋~ 真的和你没关系~
我就说 我不勤奋~ 我一事无成那又怎样呢? 少说点令别人烦感的话对你有好处~还是那些话:
你真不用介绍你的信息~~ 没情趣听~
更不用说什么勤奋不勤奋的大道理~ ~ 因为那都是娘们常说的话~
你更不应该猜想别人是什么样的人~去猜猜明天的彩票号是多少(那更有意义)
你说的以上人物确实是大牛~ 尤其是飞雪我服~
可你不能和他们相提并论~这让我觉得恶心~ 因为他们都很谦虚和低调~
他们只会说这门技术我掌握到什么程度~ 而不会轻易的去贬低一门技术~
jackyjkchen
2010-07-30
打赏
举报
回复
[Quote=引用 101 楼 linsen_519 的回复:]
引用 99 楼 jackyjkchen 的回复:
想本区的Laoden、mstlq、飞雪等大牛,在他们身上我没看出来有什么天赋,恰恰看到的是一种勤奋。
尤其是laoden,高中物理教师,根本不是业内人士,但对于技术的理解和掌握超过了99%的“程序员”
笨鸟可以先飞,懒人无可救药。
作为应届本科生的我,只是比别人勤奋那么一点点。
你真不用介绍你的信息~~ 没情趣听~……
[/Quote]
害怕别人提勤奋?哈哈,这说明了什么?不解释
linsen_519
2010-07-30
打赏
举报
回复
[Quote=引用 99 楼 jackyjkchen 的回复:]
想本区的Laoden、mstlq、飞雪等大牛,在他们身上我没看出来有什么天赋,恰恰看到的是一种勤奋。
尤其是laoden,高中物理教师,根本不是业内人士,但对于技术的理解和掌握超过了99%的“程序员”
笨鸟可以先飞,懒人无可救药。
作为应届本科生的我,只是比别人勤奋那么一点点。
[/Quote]
你真不用介绍你的信息~~ 没情趣听~
更不用说什么勤奋不勤奋的大道理~ ~ 因为那都是娘们常说的话~
你更不应该猜想别人是什么样的人~去猜猜明天的彩票号是多少(那更有意义)
你说的以上人物确实是大牛~ 尤其是飞雪我服~
可你不能和他们相提并论~这让我觉得恶心~ 因为他们都很谦虚和低调~
他们只会说这门技术我掌握到什么程度~ 而不会轻易的去贬低一门技术~
加载更多回复(100)
如何将std ::
string
转换为const
char
*或
char
*?
如何将std::
string
转换为
char
*或const
char
* ?
C++
String
与
char
* 相互转换
一、
string
->
char
* 1、将
string
转
char
*,可以使用
string
提供的c_str()或者data()函数。其中c_str()函数返回一个以'\0'结尾的字符数组,而data()仅返回字符串内容,而不含有结束符'\0'。 2、const
char
* c_str(); c_str()函数返回一个指向C字符串的指针,该指针指向内存内容和
string
相同。因为c语言不支持...
string
与
char
相互转换
转载为了更好得学习,感谢原创https://www.cnblogs.com/Pillar/p/4206452.html C++中
string
、
char
*、
char
[]的转换 头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会。现在从网上找了点资料,看了看,知道点东西了。 一、
string
转
char
*。 主要有三种方法可以将str转换为
char
*类型,分别是:data(); c_str(); copy(); 1.data()方法,如: 1
string
str .
String
转换为
char
Java中
char
是一个基本类型,而
String
是一个引用类型。有时候我们需要在它们之间互相转换。
String
转换为
char
在Java中将
String
转换为
char
是非常简单的。 1. 使用
String
.
char
At(index)(返回值为
char
)可以得到
String
中某一指定位置的
char
。 2. 使用
String
.to
Char
Array()(返回值为
char
[])可以得到将包含整个
String
的
char
数组。这样我们就能够使用从0开始的位置索引来访问
string
中的任意位置的元素。
char
string
、
char
*、
char
[] 相互转换转换
点击打开原文链接 一、
string
转
char
* 主要有三种方法可以将 str 转换为
char
* 类型,分别是:data(); c_str(); copy; 1、data() 方法:
string
str = "hello world"; const
char
*p = str.data(); //加const 或用
char
*p = (
char
*)str.data(); 的形式...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章