我有一個初學者的問題:C++ STL:問題與迭代器
bool _isPalindrome(const string& str)
{
return _isPalindrome(str.begin(), str.end()); // won't compile
}
bool _isPalindrome(string::iterator begin, string::iterator end)
{
return begin == end || *begin == *end && _isPalindrome(++begin, --end);
}
什麼我錯在這裏做什麼? str.begin()
爲什麼不檢查類型爲string::iterator
?
更新:更好的版本:
bool BrittlePalindrome::_isPalindrome(string::const_iterator begin, string::const_iterator end)
{
return begin >= end || *begin == *(end - 1) && _isPalindrome(++begin, --end);
}
'S /串:迭代/字符串:常量性/' – jfs 2010-05-27 22:11:27
再說你所問的(類型)在實現中有一個錯誤。考慮一個具有奇數個字符的字符串。 – 2010-05-27 22:16:15
另外,一般避免使用以下劃線'_'開頭的名字。應該避免的具體規則是:以雙下劃線('__')開頭或以單個下劃線和大寫字母('_X')開頭或以全局中的單個下劃線和小寫字母開頭的任何標識符命名空間('_x')爲實現保留(編譯器+標準庫) – 2010-05-27 22:19:06