C/C++文字列reverseまとめ


文字列reverseのいくつかの操作をまとめます.C++スタイルも含まれています.
一つの考えは、tmpの首尾swapをその場で利用することです.char*もStringも同じです.
char*
void Reverse(char *word)   //   C         
{                          //    C++ Primer Plus     forstr2.cpp -- reversing an array
    char 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;
    }
}

String
void Reverse(String& str)
{
	char tmp;
	int len=str.size();
	for(int i=0;i

また、copyの元の文字列を先にcopyし、copyの後の尾をloopが終わるまでソース列の頭を覆うだけで似ている.この効率は上より低い
また、あるブロガーのテストで最も効率的なシステムを直接呼び出すreverse関数もあり、実質的には先頭文字を交換します.
void Reverse(String& str)
{
reverse(str.begin(),str.end());
// STL      reverse()    
    /*     template 
     *     void reverse(BidirectionalIterator first, BidirectionalIterator last)
     *     {
     *         while ((first != last) && (first != --last))
     *             swap(*first++, *last);
     *     }
     */
}

ブロガーテストでは、呼び出しシステムが最も速く、また符号化速度も考慮しなければならないので、コードの実行効率だけでなく、私たちの効率、特に時間制限のある面接でもコードを書くことができます.次は私が基本的に最後の1種を選ぶことに出会って、char*のも先にStringを回転して、例えば
char *a;
String str=a;
string回転char*このように回転しますがconst char*です
char *a=str.c_str();
以上、ブログを参考にしましたhttp://bbs.csdn.net/topics/360161087