0

今日、Dynamic Array Stack を学び、教授がテンプレート コードをオンラインでアップロードしました。http://ideone.com/oXe2t1をご覧になりたい場合は、こちらのリンクをご覧ください。しかし、私が理解していないコードにいくつかの部分があります。

// I did not know how he comes up with the (3 * _size)
void pop() {
    assert(!is_empty());
    _size--;
    if (_capacity > (3 * _size))
        resize();
}

そして resize()

//how does he know that the max capacity will be equal to either (_size * 2)
// or DYNAMIC_ARRAYED_STACK_MIN_CAPACITY
void resize() {
    _capacity = max(_size * 2, DYNAMIC_ARRAYED_STACK_MIN_CAPACITY);
    unique_ptr<E[]> new_array(new E[_capacity]);
    for (int i = 0; i < _size; i++)
        new_array[i] = _elements[i];
    _elements.swap(new_array);
}
4

1 に答える 1