reverse() 几种操作
#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() 几种操作相关推荐
- python课堂实例_享学课堂带你了解并读懂Python列表中的6种操作实例
原标题:享学课堂带你了解并读懂Python列表中的6种操作实例 今天为大家来介绍一下很多人在享学课堂上学习Python时,经常会用到列表,列表(list)就是动态数组,相当于C++标准库的Vector ...
- linux 权限 x 表示,在Linux系统中,用户对目录拥有“x”权限,表示可以执行下列哪种操作?...
在Linux系统中,用户对目录拥有"x"权限,表示可以执行下列哪种操作? 更多相关问题 通过花的中心只能作1个对称面称辐射对称花. 王叔和归纳了脉象( )种,规范了脉象名称. 车轮 ...
- WINDOWS SERVER 2003 AD中的5种操作主机
在之前我们已经了解了在AD(活动目录)中创建林,域树和子域的方法,在一个域中,为了提高容错性和高可用性,我们建议大家在一个域中最好存在多台DC,每个DC维护域中相同的活动目录数据库.而这些DC是对等的 ...
- android sharedpre,Android SharedPreferences四种操作模式使用详解_Android_脚本之家
Android SharedPreferences详解 获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Ac ...
- 每天一道LeetCode-----使用最少的操作将一个字符串转换成另一个字符串,只有插入,删除,替换三种操作
Edit Distance 原题链接Edit Distance 题目要求,输入两个字符串word1和word2,计算可以将word1转换成word2的最小的操作次数,可以执行的操作如下,每个操作算作1 ...
- Active Directory 定义了五种操作主机角色
Active Directory 定义了五种操作主机角色(又称FSMO): 1.架构主机 schema master 2.域命名主机 domain naming master 3.相对标识号 (RID ...
- 高校里的“内卷”能有多少种操作?
一个神经元能够催生多少故事?香港中文大学信息工程系助理教授周博磊近日撰文介绍了他自 2015 年开始至今对神经元的研究经历.最近,他与 David Bau.朱俊彦等人合作的神经元研究论文发表在了 PN ...
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式详解与比较(转) http://wishlife.javaeye.com/blog/181865 posted on 2010-12 ...
- Java内存模型 - 同步八种操作
Java 内存模型 - 同步操作与规则 Java内存模型 - 同步八种操作 锁定(lock): 作用于主内存中的变量,将他标记为一个线程独享变量. 通常意义上的上锁,就是一个线程正在使用时,其他线程必 ...
最新文章
- 博士毕业后,去哪儿?
- mysql的检查点_转载一篇关于mysql检查点的文章
- C++骑士走棋盘Knight tour算法(附完整源码)
- 【转】自然语言系列学习之表示学习与知识获取(二)word2vec
- 超全流程-idea对springboot+ssm的部署实现增删改查
- [css] css常用的布局方式有哪些?
- Operating System-进程/线程内部通信-临界区(Critical Regions)
- BOSS直聘:2020一季度平均招聘薪资8609元 同比增长2.8%
- html下移,jQuery实现元素的上移下移删除
- Python中self的用法详解(链接传送)
- filter的作用 一
- 把服务器sql数据库导出excel文件,从sql中导出到excel表格数据-如何把SQLServer表数据导出为Excel文件...
- 有关table的几个问题
- sqlite3 表创建后设置主外键 联合主键 外键设置
- 美国计算机专业gre314,美国东北大学计算机专业CS硕士录取
- 中文停用词库,不用C币直接复制
- 使用kindlegen转换工具将电子书epub到mobi格式时遇到错误(prcgen):E24010:超链接:display:none
- 面试题之JAVA高级篇
- F - 士兵队列训练问题 HDU - 1276
- Hexo主题插入音乐之aplayer音乐播放器