Это действительное когда dereferencing iterator

 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;
                }
        }

когда я dereference, к которому относится проход объекта, буду я быть в состоянии проверить государство объекта; т.е. id. Или будет это просто дать мне iterator в ответ.

Я не могу пойти:

iter -> id

DlQueue - dequeue.

2
nl ja de
@SteveJessop, Да, жаль. Я didn' t читают последнюю линию.
добавлено автор TheBlueCat, источник
Почему я - downvoted? It' s действительный вопрос.
добавлено автор TheBlueCat, источник
Если you' изменение ре *iter , вы can' t использование cbegin и cend .
добавлено автор chris, источник
@TheBlueCat: *iter.stall = газетный киоск & 0xFFFFFFF; похож на модификацию мне.
добавлено автор Steve Jessop, источник

3 ответы

Нет, код, который вы цитируете, неправильный.

. has higher precedence than unary *. To access a member of the element referred to by iter you should write (*iter).id or iter->id, not *iter.id.

2
добавлено
Я думал так. Я только думал проход->, id был для функций членства.
добавлено автор TheBlueCat, источник
It' s и для функций членства и для элементов данных.
добавлено автор Steve Jessop, источник

Я зафиксировал очевидные ошибки в вашем коде:

 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;
   }
 }

это помогает?

0
добавлено

Вы пробовали его? Если вы получили ошибку компиляции, пожалуйста, скажите нам, каково это было. Кроме того, было бы действительно полезно видеть тип dlQueue .

Both (*iter).id and iter->id should result in a const reference to id (assuming dlQueue holds objects with an accessible member called id). You can't assign to a const reference, but this isn't related to your choice of *iter. or iter->.


Если вы должны <им> изменить пункты, вы повторяете, используете , начинают вместо cbegin и т.д.

for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter)
0
добавлено
It' s большой проект, таким образом, это потребовало бы, чтобы немного времени собрало вещь.
добавлено автор TheBlueCat, источник
That' s все еще пункт. Я wouldn' t даже знают, было ли это правильно. It' s крупный проект в 3-м предоставлении, таким образом, я сомневаюсь относительно i' d знают.
добавлено автор TheBlueCat, источник
You' ре, спрашивающее нас к проверке синтаксиса некоторый код вы didn' t даже попытка компилирование? Хорошее горе.
добавлено автор Useless, источник
Пункт - компилятор, может сказать вам it' s неправильно, бесплатно (и как правило не имея необходимость разрабатывать целый проект)
добавлено автор Useless, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest