-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 引用的对象时,我是否能够检查对象的状态;即身份证。或者这只会给我一个迭代器作为回报。

我不能去:

iter -> id

DlQueue 是一个出队。

4

3 回答 3

2

不,您引用的代码是错误的。

.比 unary 具有更高的优先级*。要访问iter您引用的元素的成员,应该写(*iter).idor iter->id,而不是*iter.id

于 2013-01-09T16:46:58.823 回答
0

你试过了吗?如果您遇到编译错误,请告诉我们它是什么。此外,查看dlQueue.

两者(*iter).iditer->id都应该导致对 id 的 const 引用(假设dlQueue持有具有可访问成员的对象id)。您不能分配给 const 引用,但这与您对*iter.or的选择无关iter->


如果您需要修改您正在迭代的项目,请使用begin而不是cbegin等。

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 回答