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
DlQueue — это очередь.
Нет, указанный вами код неверен.
.
имеет более высокий приоритет, чем унарный *
, Чтобы получить доступ к элементу, указанному iter
ты должен написать (*iter).id
или же iter->id
не *iter.id
,
Вы пробовали это? Если вы получили ошибку компиляции, пожалуйста, сообщите нам, что это было.
Кроме того, было бы очень полезно увидеть тип dlQueue
,
И то и другое (*iter).id
а также iter->id
должно привести к константная ссылка на id (при условии, dlQueue
содержит объекты с доступным членом под названием id
). Вы не можете назначить ссылку на const, но это не связано с вашим выбором *iter.
или же iter->
,
Если вам нужно модифицировать элементы, которые вы перебираете, используйте begin
вместо cbegin
и т.п.
for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter)
Я исправил очевидные ошибки в вашем коде:
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;
}
}
это помогает?