日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

reverse() 几种操作

發布時間:2025/3/16 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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() 几种操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。