2015-09-09 30 views
1

rbegin()和rend()在下面的函數中做了什麼以確定輸入是否是迴文?rbegin和rend()在這個函數中做了什麼?

bool palindromeCheck(string input) { 
    if (input == string(input.rbegin(), input.rend())) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 
+3

創建從「反向開始」到「反向結束」的字符串。換句話說,字符串向後。 –

+0

謝謝。仍在學習C++的基礎知識。 – Boojum

+1

你好嗎?顯然,不是通過閱讀文檔。 – Barmar

回答

2

其中一個constructors for std::string需要一對迭代器作爲輸入。 rbegin()將反向迭代器返回到原始input字符串的最後一個字符,並且rend()將原始input字符串的第一個字符之前的字符(即,超過字符串「結尾」的字符)的反向迭代器返回。

結果是構造了原始版本的新字符串,並且如果該新字符串與原始字符串相同,那麼它是迴文序列,並且函數返回true。

+0

這很有道理。非常感謝。 – Boojum

0

rbegin在字符串,input的末尾返回迭代器。換句話說,它是一個反向迭代器。 rend返回一個迭代器,它指向之前的字符串中的第一個字符。

參見:herehere