Где ошибка в операторе for?

239
22 апреля 2018, 23:02

Здравствуйте, компилятор (Visual Studio) жалуется на цикл for (а именно как я его объявил, с несколькими переменными). В чём ошибка? Почитал на сайтах, так же можно делать.

for (seqList* cur = sequence, int j = 0; j < len; cur = cur->next, j++) {
    this->addElem(cur->elem->value);
}

Переменная len объявлена, если что.

Answer 1

Вы не можете давать несколько объявлений в заголовке

seqList* cur = sequence, int j = 0;

Вернее, несколько объявлений разных типов...

Но можно сыграть с помощью структуры:

struct Intern
{
    seqList * cur;
    int j;
};
for(Intern x = { sequence, 0 }; x.j < len; x.cur = x.cur->next, x.j++)
{
    // ...
}

Или с помощью кортежа:

for(tuple<seqList*,int> x = { sequence, 0 };
    get<1>(x) < len;
    get<0>(x) = get<0>(x)->next, get<1>(x)++)
{
    // ...
}

Или даже так (С++17):

for(auto [cur,j] = make_tuple(sequence,0);
    j < len;
    cur = cur->next, j++)
{
    // ...
}
READ ALSO
Критические секции WinAPI в цикле: проблемы освобождения секции

Критические секции WinAPI в цикле: проблемы освобождения секции

Задача следующая: создать n потоков и в каждом из них выводить уникальную строку посимвольноОперация вывода должна быть атомарной

203
Зависящие от времени действия в loopback

Зависящие от времени действия в loopback

Пытаюсь разобраться в loopback-4Создание Rest-API я освоил, теперь встала задача выполнять на сервере различные действия каждые несколько секунд...

175
Почему не применяется стиль к классу Angular 5

Почему не применяется стиль к классу Angular 5

Введено слово находим в тексте с помощью регулярного выражения и вкладиваем в <span class = "match"> слово </ span> с помощью пайпаСпан и класс приминяеться,...

184