Почему происходит ошибка? КомпилЯтор ругается, не могу удалить от начала списка до текущего эллемента? Как исправить?
std::vector<Location> route;
for (auto & r : route)
for (auto & l : locs)
if (l.enable && l == r)
route.erase(route.begin(), r); //<- Ошибка
Есть две ошибки:
1) vector::erase принимает пару итераторов, а вы пытаететсь передать итератор + значение переменной.
2) Range-base цикл, на самом деле, цикл опирающейся на итераторы, и в качестве скрытой переменной "текущая позиция" также используется итератор. В тоже время vector::erase инвалидирует все итераторы контейнера, а не только те, которые указывают на удаляемые элементы, как вы, вероятно думаете.
Возможные решения: Заменить range-based цикл на цикл с явным итератором, а кроме того, заменить тип контейнера с vector на lis.
Либо заменить range-based цикл на вызов стандартных алгоритмов:
auto condition=[&locs]( const Location& r)->bool{
for (auto & l : locs)
if (l.enable && l == r)
return true;
return false;
}
route.erase( route.rend(), std::find_if( route.rbegin(), route.rend() , condition ));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Так передает нормально, send_gift_account(2432,Вася Пупкин), но нужно, чтобы параметры были в одинарных ковычках send_gift_account('2432','Вася Пупкин')
Нужно сделать так, чтобы в HTML коде (в тексте самой страницы) появлялись определенные значения переменных, которые рассчитываются вjs файле...