2016-08-28 4 views
1

プログラムが各単語を通過する主なイテレータを持つQStringListで作業しています。ここでは、サブイテレータを特定の位置から開始するサブイテレータを実装したいと考えています。私はpkg_header+1位置の代わりに、pkg_header.begin()をやってから、サブイテレータスタートを作るために助けが必要、つまり特定のインデックスから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++){ 
     ... 
    } 
} 

は、ここに私のコードを簡単に視覚化したものです。

ありがとうございました。

for (QStringList::iterator pkg_section = pkg_header + 1; 
    pkg_section != inputline.end(); 
    pkg_section ++) 
    ... 

しかし、たとえそうでなければ、あなたはいつでも行うことができます:

+1

['std :: next'](http://en.cppreference.com/w/cpp/iterator/next)を使用できますか? – Tas

+1

これはあなたの考えるより簡単です。参照:http://stackoverflow.com/questions/1033089/can-i-increment-an-iterator-by-just-adding-a-number – Chris

答えて

1

私はあなただけQStringListイテレータ(私が間違っている場合、誰かが私を修正)でoperator + (int)を使用することができます思い

QStringList::iterator pkg_section = pkg_header; 
for (pkg_section ++; pkg_section != inputline.end(); pkg_section ++) 
    ... 

お詫び+ 1できない場合は、すぐにQStringListを確認するのに便利な立場にいません。

また、ループの終了条件についていくつかの混乱があるようです。私はあなたがinputline.end()を意味していると仮定しています。pkg_header.end()は無効です... pkg_headeriteratorです。end()はありません。

関連する問題