我在QStringList上工作,程序有一个主迭代器来遍历每个单词。现在我想实现一个子迭代器,我希望子迭代器从某个位置开始。
以下是我的代码的简单可视化:
for(QStringList::iterator pkg_header(inputline.begin()); pkg_header != inputline.end(); ++pkg_header){
...
if(!QString::compare(*pkg_header,Computing)){
for(QStringList::iterator pkg_section(pkg_header+1; pkg_section != pkg_header.end(); pkg_section++){
...
}
}
换句话说,我需要帮助才能使子迭代器从pkg_header+1
位置开始而不是pkg_header.begin()
。
感谢。
答案 0 :(得分:1)
我认为你可以使用operator + (int)
和QStringList
迭代器(如果我错了,有人会纠正我):
for (QStringList::iterator pkg_section = pkg_header + 1;
pkg_section != inputline.end();
pkg_section ++)
...
但即使不是,你也可以这样做:
QStringList::iterator pkg_section = pkg_header;
for (pkg_section ++; pkg_section != inputline.end(); pkg_section ++)
...
如果你不能+ 1
道歉,我现在无法方便地检查QStringList
。
此外,您似乎对循环的终止条件有些困惑。我假设您的意思是inputline.end()
,因为pkg_header.end()
无效... pkg_header
是iterator
,它没有end()
。< / p>