rbegin和rend()在这个函数中做了什么?

时间:2015-09-09 19:18:30

标签: c++ function iterator

rbegin()和rend()在以下函数中究竟做了什么来确定输入是否是回文?

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

2 个答案:

答案 0 :(得分:2)

其中一个constructors for std::string将一对迭代器作为输入。 rbegin()返回原始input字符串的最后一个字符的反向迭代器,rend()返回原始input字符串第一个字符前面的字符的反向迭代器(即一个超过字符串的"结束"。

结果是构造了原始版本的反转版本的新字符串,如果新字符串与原始字符串相等,那么它就是一个回文并且函数返回true。

答案 1 :(得分:0)

^(\d[()\s#-]*){4,}\d$ 返回字符串rbegin末尾的迭代器。换句话说,它是一个反向迭代器。 input返回一个迭代器,该指向之前字符串中的第一个字符。

请参阅:herehere