如何使用 STL 迭代器和 reverse_iterator 操作数据
how to manipulate data using STL iterator and reverse_iterator
我正在使用 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;
}
我正在使用 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;
}