#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>inline void STL_Reverse(std::string& str) // 反转string字符串 包装STL的reverse()  可以inline
{reverse(str.begin(), str.end());// STL 反转函数 reverse() 的实现/*     template <class BidirectionalIterator>*     void reverse(BidirectionalIterator first, BidirectionalIterator last)*     {*         while ((first != last) && (first != --last))*             swap(*first++, *last);*     }*/
}void bad_Reverse(std::string& str) // 效率低的反转字符串函数
{std::string tmp(str);std::string::size_type ix = str.length() - 1;for (std::string::size_type i = 0; i < str.length(); i++) {str[i] = tmp[ix];ix--;}
}void good_Reverse(std::string &word)   // 仿制STL的算法的,适合string字符串反转函数
{                                      // 效率比 C++ Primer Plus 的高一点size_t first, last;first = 0;last = word.size();while ((first != last) && (first != --last))std::swap(word[first++], word[last]);
}void Reverse(std::string &word)   // 适合string字符串反转函数
{                                 // 来源 C++ Primer Plus 第五章 forstr2.cpp -- reversing an arraychar temp;size_t i, j;for (j = 0, i = word.size() - 1; j < i; --i, ++j) {temp = word[i];word[i] = word[j];word[j] = temp;}
}void bad_Reverse(char *str)  // 效率低的反转字符串函数 适合C风格字符串
{char * tmp = new char[strlen(str)];strcpy(tmp, str);size_t ix = strlen(str) - 1;for (size_t i = 0; i < strlen(str); i++) {str[i] = tmp[ix];ix--;}delete[] tmp;
}void good_Reverse(char *word)   // 仿制STL的算法的,适合C风格字符串反转函数
{                               // 效率没有 C++ Primer Plus 的高size_t first, last;first = 0;last = strlen(word);while ((first != last) && (first != --last))std::swap(word[first++], word[last]);
}void Reverse(char *word)   // 适合C风格字符串反转函数
{                          // 来源 C++ Primer Plus 第五章 forstr2.cpp -- reversing an arraychar temp;size_t i, j;for (j = 0, i = strlen(word) - 1; j < i; --i, ++j) {temp = word[i];word[i] = word[j];word[j] = temp;}
}int main()
{using namespace std;// 1KW 字符串反序函数测试,分别测试同样算法,string 和 C风格字符串的区别string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";for (int i = 0 ; i != 10000001 ; i++)//  STL_Reverse(str);   //0.313秒//  good_Reverse(str);  //0.875秒//  Reverse(str);       //1.063秒bad_Reverse(str);       //7.016秒cout << str << endl;char cs[] = "0123456789abcdefghijklmnopqrstuvwxyz";for (int i = 0 ; i != 10000001 ; i++)// Reverse(cs);        //0.578秒// good_Reverse(cs);   //0.859秒bad_Reverse(cs);       //13.766秒cout << cs << endl;return 0;
}

reverse() 几种操作相关推荐

  1. python课堂实例_享学课堂带你了解并读懂Python列表中的6种操作实例

    原标题:享学课堂带你了解并读懂Python列表中的6种操作实例 今天为大家来介绍一下很多人在享学课堂上学习Python时,经常会用到列表,列表(list)就是动态数组,相当于C++标准库的Vector ...

  2. linux 权限 x 表示,在Linux系统中,用户对目录拥有“x”权限,表示可以执行下列哪种操作?...

    在Linux系统中,用户对目录拥有"x"权限,表示可以执行下列哪种操作? 更多相关问题 通过花的中心只能作1个对称面称辐射对称花. 王叔和归纳了脉象( )种,规范了脉象名称. 车轮 ...

  3. WINDOWS SERVER 2003 AD中的5种操作主机

    在之前我们已经了解了在AD(活动目录)中创建林,域树和子域的方法,在一个域中,为了提高容错性和高可用性,我们建议大家在一个域中最好存在多台DC,每个DC维护域中相同的活动目录数据库.而这些DC是对等的 ...

  4. android sharedpre,Android SharedPreferences四种操作模式使用详解_Android_脚本之家

    Android  SharedPreferences详解 获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Ac ...

  5. 每天一道LeetCode-----使用最少的操作将一个字符串转换成另一个字符串,只有插入,删除,替换三种操作

    Edit Distance 原题链接Edit Distance 题目要求,输入两个字符串word1和word2,计算可以将word1转换成word2的最小的操作次数,可以执行的操作如下,每个操作算作1 ...

  6. Active Directory 定义了五种操作主机角色

    Active Directory 定义了五种操作主机角色(又称FSMO): 1.架构主机 schema master 2.域命名主机 domain naming master 3.相对标识号 (RID ...

  7. 高校里的“内卷”能有多少种操作?

    一个神经元能够催生多少故事?香港中文大学信息工程系助理教授周博磊近日撰文介绍了他自 2015 年开始至今对神经元的研究经历.最近,他与 David Bau.朱俊彦等人合作的神经元研究论文发表在了 PN ...

  8. java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)

    java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式详解与比较(转) http://wishlife.javaeye.com/blog/181865 posted on 2010-12 ...

  9. Java内存模型 - 同步八种操作

    Java 内存模型 - 同步操作与规则 Java内存模型 - 同步八种操作 锁定(lock): 作用于主内存中的变量,将他标记为一个线程独享变量. 通常意义上的上锁,就是一个线程正在使用时,其他线程必 ...

最新文章

  1. 博士毕业后,去哪儿?
  2. mysql的检查点_转载一篇关于mysql检查点的文章
  3. C++骑士走棋盘Knight tour算法(附完整源码)
  4. 【转】自然语言系列学习之表示学习与知识获取(二)word2vec
  5. 超全流程-idea对springboot+ssm的部署实现增删改查
  6. [css] css常用的布局方式有哪些?
  7. Operating System-进程/线程内部通信-临界区(Critical Regions)
  8. BOSS直聘:2020一季度平均招聘薪资8609元 同比增长2.8%
  9. html下移,jQuery实现元素的上移下移删除
  10. Python中self的用法详解(链接传送)
  11. filter的作用 一
  12. 把服务器sql数据库导出excel文件,从sql中导出到excel表格数据-如何把SQLServer表数据导出为Excel文件...
  13. 有关table的几个问题
  14. sqlite3 表创建后设置主外键 联合主键 外键设置
  15. 美国计算机专业gre314,美国东北大学计算机专业CS硕士录取
  16. 中文停用词库,不用C币直接复制
  17. 使用kindlegen转换工具将电子书epub到mobi格式时遇到错误(prcgen):E24010:超链接:display:none
  18. 面试题之JAVA高级篇
  19. F - 士兵队列训练问题 HDU - 1276
  20. Hexo主题插入音乐之aplayer音乐播放器

热门文章

  1. (转)Linux I/O 调度方法
  2. 微服务改造中解决跨库问题的思路
  3. 黑马day14 过滤器概述amp;生命周期amp;运行过程
  4. 求幂,我居然又没做出来
  5. swift3.0 Runtime 增加属性
  6. 关闭sql执行功能及找回08CMS系统管理员密码
  7. 趣味Python入门(一):初识Python
  8. (原创)OpenStack服务如何使用Keystone(三)---详细配置Keystone中间件
  9. 被程序员忽视的位运算
  10. 杀软厂商开源--从此走向平台化?