-2
 for (auto iter = dlQueue.cbegin(); iter != dlQueue.cend(); ++iter)     
        {
                // reference to the current element in the container
                if (*iter.id == listid)
                {
                        *iter.stall = newstall & 0xFFFFFFF;
                }
        }

iterが参照するオブジェクトを逆参照すると、オブジェクトの状態を確認できます。すなわちid。それとも、これは私にイテレータを返すだけですか?

私は行くことができません:

iter -> id

DlQueueはデキューです。

4

3 に答える 3

2

いいえ、引用するコードは間違っています。

.単項よりも優先順位が高くなり*ます。参照する要素のメンバーにアクセスするには、 。ではなく、またはiterを記述する必要があります。(*iter).iditer->id*iter.id

于 2013-01-09T16:46:58.823 に答える
0

試してみましたか?コンパイル エラーが発生した場合は、その内容をお知らせください。また、 のタイプを確認できると非常に役立ちますdlQueue

(*iter).idとの両方が id へiter->idの const 参照になるはずです (と呼ばれるアクセス可能なメンバーを持つオブジェクトを保持していると仮定します)。const 参照に割り当てることはできませんが、これはまたはの選択とは関係ありません。dlQueueid*iter.iter->


反復しているアイテムを変更する必要がある場合は、begin代わりにcbeginetcを使用します。

for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter)
于 2013-01-09T16:43:43.963 に答える
0

コードの明らかなエラーを修正しました。

 for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter) {
   // if the id matches:
   if (iter->id == listid) {
     // assign to stall a bitmasked version of newstall:
     iter->stall = newstall & 0xFFFFFFF;
   }
 }

それは役に立ちますか?

于 2013-01-09T16:44:19.887 に答える