c++primer第四版里习题4.29为什么我得到的结果和他所说的正好相反?

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:26:50
书上说用string快
我试验了一下正好相反 用string慢多了

这是怎么回事啊??
原题目为:
以下两段程序反映了使用C风格字符串与C++的标准库类型string的不同之处
//C-style character string implementation
const char *pc = "a very long literal string";
const size_t len = strlen(pc+1);
for (size_t ix = 0; ix!=1000000; ++ix)
{
char *pc2 = new char[len+1];
strcpy(pc2,pc);
if (strcmp(pc2,pc))
;
delete []pc2;
}

//string implementation
string str("a very long literal string");
for (int ix=0; ix!=1000000; ++ix)
{
string str2 = str;
if(str!=str2)
;
}
答案为:
(a)这两段程序的功能是:执行一个循环次数为1000000的循环,在该循环的循环体中:创建一个新的字符串,讲一个已经存在的字符串赋值给新字符串,然后比较两个字符串,最后释放新字符串。
(b) 使用 C风格字符串的程序需要自己管理内存的分配和释放,而使用 string类型的程序由系统自动进行内存的分配和释放,因此比使用 C 风格字符串的程序要简短,执行速度也要快一些。

我比较这两个程序的执行速度发现结果和书中的正好相反,也就是说使用string类型的程序反而比较慢而且还十分明显。

如果你是和CString类比较的话,string的确更快.

可能是你的测试方法有问题吧.

可以到网上搜一下他们的比较特点

用string是哪个string

是c character string type 还是cstring 还是STL std::string?

怎么测试的 ctime? 感觉? 测试的代码呢 这些都是和结果有关的

个人感觉primer写的有点那个 里面对c风格比较排斥 尤其是非常讨厌char * 事实上c++的STL很慢 和c相比效率差了数量级的

书上叫不一定都对,而且不同的机器结果也不一定相同