What are the complexity guarantees of the standard containers?

前端 未结 3 1960
夕颜
夕颜 2020-11-22 11:10

Apparently ;-) the standard containers provide some form of guarantees.

What type of guarantees and what exactly are the differences between the different types of c

3条回答
  •  没有蜡笔的小新
    2020-11-22 11:35

    I found the nice resource Standard C++ Containers. Probably this is what you all looking for.

    VECTOR

    Constructors

    vector v;              Make an empty vector.                                     O(1)
    vector v(n);           Make a vector with N elements.                            O(n)
    vector v(n, value);    Make a vector with N elements, initialized to value.      O(n)
    vector v(begin, end);  Make a vector and copy the elements from begin to end.    O(n)
    

    Accessors

    v[i]          Return (or set) the I'th element.                        O(1)
    v.at(i)       Return (or set) the I'th element, with bounds checking.  O(1)
    v.size()      Return current number of elements.                       O(1)
    v.empty()     Return true if vector is empty.                          O(1)
    v.begin()     Return random access iterator to start.                  O(1)
    v.end()       Return random access iterator to end.                    O(1)
    v.front()     Return the first element.                                O(1)
    v.back()      Return the last element.                                 O(1)
    v.capacity()  Return maximum number of elements.                       O(1)
    

    Modifiers

    v.push_back(value)         Add value to end.                                                O(1) (amortized)
    v.insert(iterator, value)  Insert value at the position indexed by iterator.                O(n)
    v.pop_back()               Remove value from end.                                           O(1)
    v.assign(begin, end)       Clear the container and copy in the elements from begin to end.  O(n)
    v.erase(iterator)          Erase value indexed by iterator.                                 O(n)
    v.erase(begin, end)        Erase the elements from begin to end.                            O(n)
    

    For other containers, refer to the page.

提交回复
热议问题