如何使用STL迭代器和reverse_iterator处理数据

how to manipulate data using STL iterator and reverse_iterator

本文关键字:iterator 处理 数据 reverse 何使用 STL 迭代器      更新时间:2023-10-16

我正在使用STL在适当的位置反转字符串。通常,我可以使用for循环和I j作为索引,或者直接使用指针。但这次,我想使用STL迭代器。我创建了一个正向迭代器和一个反向迭代器。然而,我似乎无法比较这两个迭代器,错误显示在"iter!=riter"。同时,我也不能使用*iter=*riter。iter是不可变的。

有人能帮我纠正我的代码,让它运行吗?谢谢

vector<char> str_reverse( vector<char> input)
{
    vector<char>::const_iterator iter;
    vector<char>::reverse_iterator riter;
    for(iter = input.begin(), riter = input.rbegin(); iter != riter; iter ++, riter++)
    {
        char temp = *iter;
        *iter = *riter;
        *riter = temp;
    }

    return input;

}
vector<char> str_reverse(vector<char> input)
{
    vector<char>::iterator iter, riter;
    if (!input.empty())
        for(iter = input.begin(), riter = input.end(); iter < --riter; ++iter)
        {
            char temp = *iter;
            *iter  = *riter;
            *riter = temp;
        }
    return input;
}