std::collections::vecdeque (v0.2.2)

Double-ended queue with push and pop on both ends.

Latest

Overview

std::collections::vecdeque is a generic double-ended queue. It supports push and pop on both the front and the back.

pushFront, pushBack, popFront, and popBack operate on the ends; dropVecDeque releases the storage.

Source: thrustc/std/v0.2.2/collections/vecdeque.thrust

Public Signatures

Exported declarations for this module snapshot.

const VECDEQUE_INITIAL_CAPACITY: usize @public = 4;
struct VecDeque [T] @public {
fn newVecDeque [T] () VecDeque[T] @public;
fn withCapacity [T] (capacity: usize) VecDeque[T] @public;
fn dropVecDeque [T] (deque: ptr[VecDeque[T]]) void @public @deallocator;
fn getLength [T] (deque: ptr[VecDeque[T]]) usize @public;
fn getCapacity [T] (deque: ptr[VecDeque[T]]) usize @public;
fn isEmpty [T] (deque: ptr[VecDeque[T]]) bool @public;
fn getDataPointer [T] (deque: ptr[VecDeque[T]]) ptr[T] @public;
fn at [T] (deque: ptr[VecDeque[T]], index: usize) T @public;
fn front [T] (deque: ptr[VecDeque[T]]) T @public;
fn back [T] (deque: ptr[VecDeque[T]]) T @public;
fn ensureCapacity [T] (deque: ptr[VecDeque[T]], minimum: usize) void @public;
fn pushBack [T] (deque: ptr[VecDeque[T]], value: T) void @public;
fn pushFront [T] (deque: ptr[VecDeque[T]], value: T) void @public;
fn popBack [T] (deque: ptr[VecDeque[T]]) T @public;
fn popFront [T] (deque: ptr[VecDeque[T]]) T @public;
fn clear [T] (deque: ptr[VecDeque[T]]) void @public;
fn reserveCapacity [T] (deque: ptr[VecDeque[T]], newCapacity: usize) void @public;
fn shrinkToFit [T] (deque: ptr[VecDeque[T]]) void @public;

Behavior and Use

Operations are available on both ends: pushFront, pushBack, popFront, and popBack.

Call dropVecDeque when the container is no longer needed to release the backing storage.

Examples

import std::collections::vecdeque;
import std::io;

// Keep a sliding window of recent events.
fn main() s32 @public {
    var recent := vecdeque::newVecDeque[s32]();

    vecdeque::pushBack[s32](ref recent, 1);
    vecdeque::pushBack[s32](ref recent, 2);
    vecdeque::pushFront[s32](ref recent, 3);

    var oldest: s32 = vecdeque::popFront[s32](ref recent);

    io::print("oldest event: %d\n", oldest);

    vecdeque::dropVecDeque[s32](ref recent);

    return 0;
}
import std::collections::vecdeque;
import std::io;

// Read an event by its position in the window.
fn main() s32 @public {
    var recent := vecdeque::newVecDeque[s32]();

    vecdeque::pushBack[s32](ref recent, 1);
    vecdeque::pushBack[s32](ref recent, 2);
    vecdeque::pushFront[s32](ref recent, 3);

    io::print("middle event: %d\n", vecdeque::at[s32](ref recent, 1));

    vecdeque::dropVecDeque[s32](ref recent);

    return 0;
}
import std::collections::vecdeque;
import std::io;

// Inspect both ends of the window.
fn main() s32 @public {
    var recent := vecdeque::newVecDeque[s32]();

    vecdeque::pushBack[s32](ref recent, 7);
    vecdeque::pushBack[s32](ref recent, 8);

    io::print("front: %d, back: %d\n", vecdeque::front[s32](ref recent), vecdeque::popBack[s32](ref recent));

    vecdeque::dropVecDeque[s32](ref recent);

    return 0;
}

Notes

Back to std index