How it works
Remove and return the element at the front of a double-ended queue, shifting remaining elements toward the head.
Implementation
function dequePopFrontOp(state) { const values = state.values; const n = values.length; if (n === 0) { reportNotFound(); return; } probeSlot(0); const removed = values[0]; let i = 0; while (i < n - 1) { values[i] = values[i + 1]; i = i + 1; } values.length = n - 1; dequeueValue(0, removed); finish(values.length); }
def dequePopFrontOp(state): values = state.values n = values.length if (n == 0): reportNotFound() return probeSlot(0) removed = values[0] i = 0 while (i < (n - 1)): values[i] = values[(i + 1)] i = (i + 1) values.length = (n - 1) dequeueValue(0, removed) finish(values.length)
#include <vector> #include <algorithm> void dequePopFrontOp(int state) { auto values = state.values; auto n = values.length; if((n == 0)) { reportNotFound(); return; } probeSlot(0); auto removed = values[0]; auto i = 0; while((i < (n - 1))) { values[i] = values[(i + 1)]; i = (i + 1); } values.length = (n - 1); dequeueValue(0, removed); finish(values.length); }
public void dequePopFrontOp(int state) { var values = state.values; var n = values.length; if((n == 0)) { reportNotFound(); return; } probeSlot(0); var removed = values[0]; var i = 0; while((i < (n - 1))) { values[i] = values[(i + 1)]; i = (i + 1); } values.length = (n - 1); dequeueValue(0, removed); finish(values.length); }
#include <stdio.h> void dequePopFrontOp(int state) { var values = state.values; var n = values.length; if((n == 0)) { reportNotFound(); return; } probeSlot(0); var removed = values[0]; var i = 0; while((i < (n - 1))) { values[i] = values[(i + 1)]; i = (i + 1); } values.length = (n - 1); dequeueValue(0, removed); finish(values.length); }