Измените индекс диапазона C++ на основе цикла for с помощью представлений::enumerateC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Измените индекс диапазона C++ на основе цикла for с помощью представлений::enumerate

Сообщение Anonymous »

В C++, используя диапазон на основе цикла for, я могу использоватьviews::enumerate, чтобы получить как значение, так и индекс вектора.
Я пытаюсь уменьшить индекс, чтобы на следующей итерации цикл снова запустился с тем же индексом:

Код: Выделить всё

#include 

class Solution {
public:
string restoreString(string s, vector& indices) {
for (const auto &[i, index] : views::enumerate(indices))
{
if (index == i)    continue;

swap(s[i], s[index]);
swap(indices[i], indices[index]);

long& nci = const_cast(i);
--nci;
}

return s;
}
};
Если я попытаюсь получить доступ к i как к указателю, потребуется использовать const, поэтому я не могу изменить i напрямую, поэтому я попробовал использовать const_cast, но даже тогда значение i не меняется в следующем цикле.
Можно ли изменить значение индекса при использовании views::enumerate в диапазоне C++ на основе цикла for?

Подробнее здесь: https://stackoverflow.com/questions/792 ... senumerate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»