Поиск пар в C

#c #deque #std-pair

#c #деке #std-пара

Вопрос:

Каждый раз, когда я вызываю эту функцию, я получаю ошибку сегментации. Я обнаружил, что функция pop_front() работает не так, как я ожидал. Я попытался заменить его функцией стирания, но это не решило проблему. Я хотел бы спросить, почему это не работает и как я должен это решить.

 void front(deque <pair<int64_t, int64_t>> p, int64_t o, int64_t t, int64_t per)
{
    int64_t i=0;
    while(i<per) {
        if(p.front().second > per) {
            i = per;
            p.front().second =- per;
        }
        else {
            i = p.front().second;
            p.pop_front();
        }
    }
    p.push_front(make_pair(t, o per));
}
 

Комментарии:

1. Возможно, вы пытаетесь получить доступ к пустому deque. Вы можете проверить это

2. Кстати, вы должны передавать p по ссылке, в противном случае вы получите локальную копию deque, и ваша функция ничего не изменит в исходном deque

3. while(i<per amp;amp; !p.empty()) ?