我有一个初学者的问题: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