【发布时间】:2020-11-10 10:44:40
【问题描述】:
我正在尝试反转 std::string:
void reverseString(vector<char>& s)
{
auto i = s.begin();
auto j = s.rbegin();
while (i != j)
{
char tmp = *i;
*i = *j;
*j = tmp;
i++;
j--;
}
}
但是,当我尝试比较迭代器时发生了这种情况
错误:
Line 6: Char 17: error: invalid operands to binary expression
('__gnu_cxx::__normal_iterator<char *, std::vector<char, std::allocator<char> > >' and
'std::reverse_iterator<__gnu_cxx::__normal_iterator<char *, std::vector<char, std::allocator<char> > > >')
while(i != j) {
【问题讨论】:
-
begin() 和 rbegin() 返回不同的类型。一个是迭代器,另一个是反向迭代器。
-
@dgrandm 选择了我的答案。我希望你不介意。
-
请查看此gcc.godbolt.org/z/r1vv73 并进行比较。
-
@VarushVarsha 那是仅链接,仅代码和评论中的回答。好的,也许您确实发表了评论而不是回答,因为它是仅链接且仅代码的。请考虑直接在此处做出正确的解释性答案。如果通过解释我可以很容易地看到它比我的答案更好,我会很高兴地投票。
-
我没有否决你的回答;就正确答案而言,我既没有时间也没有意愿正确参与这个网站。
标签: c++ algorithm iterator reverse stdstring