STL List
List
包含头文件<list>
。
定义:
1 | namespace std { |
顺序容器。不提供随机存取。插入删除操作在任何位置都很快,并且不会使迭代器失效。安全。双向迭代器。
List容器的操作
Create, Copy and Destroy
Operation | Effect |
---|---|
list |
Default constructor; creates an empty list without any elements |
list |
Copy constructor; creates a new list as a copy of c2 (all elements are copied) |
list |
Copy constructor; creates a new list as a copy of c2 (all elements are copied) |
list |
Move constructor; creates a new list, taking the contents of the rvalue rv (since C++11) |
list |
Move constructor; creates a new list, taking the contents of the rvalue rv (since C++11) |
list |
Creates a list with n elements created by the default constructor |
list |
Creates a list initialized with n copies of element elem |
list |
Creates a list initialized with the elements of the range [beg,end) |
list |
Creates a list initialized with the elements of initializer list initlist (since C++11) |
list |
Creates a list initialized with the elements of initializer list initlist (since C++11) |
c.~list() | Destroys all elements and frees the memory |
Nonmodifying Operations
Operation | Effect |
---|---|
c.empty() | Returns whether the container is empty (equivalent to size()==0 but might be faster) |
c.size() | Returns the current number of elements |
c.max_size() | Returns the maximum number of elements possible |
c1 == c2 | Returns whether c1 is equal to c2 (calls == for the elements) |
c1 != c2 | Returns whether c1 is not equal to c2 (equivalent to !(c1==c2) ) |
c1 < c2 | Returns whether c1 is less than c2 |
c1 > c2 | Returns whether c1 is greater than c2 (equivalent to c2<c1) |
c1 <= c2 | Returns whether c1 is less than or equal to c2 (equivalent to !(c2<c1) ) |
c1 >= c2 | Returns whether c1 is greater than or equal to c2 (equivalent to !(c1<c2) ) |
Assignments
Operation | Effect |
---|---|
c = c2 | Assigns all elements of c2 to c |
c = rv | Move assigns all elements of the rvalue rv to c (since C++11) |
c = initlist | Assigns all elements of the initializer list initlist to c (since C++11) |
c.assign(n, elem) | Assigns n copies of element elem |
c.assign(beg, end) | Assigns the elements of the range [beg,end) |
c.assign(initlist) | Assigns all the elements of the initializer list initlist |
c1.swap(c2) | Swaps the data of c1 and c2 |
swap(c1, c2) | Swaps the data of c1 and c2 |
Element Access
Operation | Effect |
---|---|
c.front() | Returns the first element (no check whether a first element exists) |
c.back() | Returns the last element (no check whether a last element exists) |
Iterator Functions
Bidirectional Iterator.
Operation | Effect |
---|---|
c.begin() | Returns a bidirectional iterator for the first element |
c.end() | Returns a bidirectional iterator for the position after the last element |
c.cbegin() | Returns a constant bidirectional iterator for the first element (since C++11) |
c.cend() | Returns a constant bidirectional iterator for the position after the last element (since C++11) |
c.rbegin() | Returns a reverse iterator for the first element of a reverse iteration |
c.rend() | Returns a reverse iterator for the position after the last element of a reverse iteration |
c.crbegin() | Returns a constant reverse iterator for the first element of a reverse iteration (since C++11) |
c.crend() | Returns a constant reverse iterator for the position after the last element of a reverse iteration (since C++11) |
Inserting and Removing Elements
Operation | Effect |
---|---|
c.push_back(elem) | Appends a copy of elem at the end |
c.pop_back() | Removes the last element (does not return it) |
c.push_front(elem) | Inserts a copy of elem at the beginning |
c.pop_front() | Removes the first element (does not return it) |
c.insert(pos, elem) | Inserts a copy of elem before iterator position pos and returns the position of the new element |
c.insert(pos, n, elem) | Inserts n copies of elem before iterator position pos and returns the position of the first new element (or pos if there is no new element) |
c.insert(pos, beg, end) | Inserts a copy of all elements of the range [beg,end) before iterator position pos and returns the position of the first new element (or pos if there is no new element) |
c.insert(pos, initlist) | Inserts a copy of all elements of the initializer list initlist before iterator position pos and returns the position of the first new element (or pos if there is no new element; since C++11) |
c.emplace(pos, args…) | Inserts a copy of an element initialized with args before iterator position pos and returns the position of the new element (since C++11) |
c.emplace_back(args…) | Appends a copy of an element initialized with args at the end (returns nothing; since C++11) |
c.emplace_front(args…) | Inserts a copy of an element initialized with args at the beginning (returns nothing; since C++11) |
c.erase(pos) | Removes the element at iterator position pos and returns the position of the next element |
c.erase(beg, end) | Removes all elements of the range [beg,end) and returns the position of the next element |
c.remove(val) | Removes all elements with value val |
c.remove_if(op) | Removes all elements for which op(elem) yields true |
c.resize(num) | Changes the number of elements to num (if size() grows new elements are created by their default constructor) |
c.resize(num, elem) | Changes the number of elements to num (if size() grows new elements are copies of elem) |
c.clear() | Removes all elements (empties the container) |
Splice Functions and Functions to Change the Order of Elements
Operation | Effect |
---|---|
c.unique() | Removes duplicates of consecutive elements with the same value |
c.unique(op) | Removes duplicates of consecutive elements, for which op() yields true |
c.splice(pos, c2) | Moves all elements of c2 to c in front of the iterator position pos |
c.splice(pos, c2, c2pos) | Moves the element at c2pos in c2 in front of pos of list c (c and c2 may be identical) |
c.splice(pos, c2, c2beg, c2end) | Moves all elements of the range [c2beg,c2end) in c2 in front of pos of list c (c and c2 may be identical) |
c.sort() | Sorts all elements with operator < c.sort(op) Sorts all elements with op() |
c.merge(c2) | Assuming that both containers contain the elements sorted, moves all elements of c2 into c so that all elements are merged and still sorted |
c.merge(c2, op) | Assuming that both containers contain the elements sorted due to the sorting criterion op() , moves all elements of c2 into c so that all elements are merged and still sorted according to op() |
c.reverse() | Reverses the order of all elements |
使用List的示例
1 | // Examples of Using List |
[1] The C++ Standard Library 2nd Edition