在遍历整个string
的循环中,如何查看迭代器的下一个值?
for (string::iterator it = inp.begin(); it!= inp.end(); ++it)
{
// Just peek at the next value of it, without actually incrementing the iterator
}
这在C中很简单,
for (i = 0; i < strlen(str); ++i) {
if (str[i] == str[i+1]) {
// Processing
}
}
在c ++中以上有效的方法吗?
注意:我没有使用Boost。
答案 0 :(得分:5)
if ( not imp.empty() )
{
for (string::iterator it = inp.begin(); it!= inp.end(); ++it)
if (it + 1 != inp.end() and *it == *(it + 1)) {
// Processing
}
}
}
或
if ( not imp.empty() )
{
for (string::iterator it = inp.begin(); it!= inp.end() - 1; ++it)
if ( *it == *(it+1) ) {
// Processing
}
}
}
答案 1 :(得分:2)
string
碰巧提供随机访问迭代器,因此存在operator+(int)
。你可以使用Shmoopty的答案,很简单。
如果您使用list<>
,它只提供双向迭代器,那么您将保留第二个迭代器。
for (list<char>::iterator it(inp.begin()), next(it);
it != inp.end() && ++next != inp.end(); it = next) {
if (*it == *next) {
// Processing
}
}