C++ STL list
阿新 • • 發佈:2021-01-23
##`std::list`
`
- `
###列表性質
1、雙向連結串列
2、只支援雙向順序訪問,不支援下標訪問(隨機訪問迭代器)(元素隨機訪問)
3、因為不支援隨機訪問迭代器,所以不能使用`std::sort`進行排序,需要呼叫成員函式`list::sort`
4、在`list`中任何位置進行`插入/刪除`操作速度都很快
###容器操作
####1、類型別名
| 型別 | 解釋 |
| ------------ | ------ |
| `iterator` | 此容器型別的迭代器型別 |
| `const_iterator` | 可以讀取元素,但不能修改元素的迭代器型別 |
| `size_type` | 無符號整數型別,足夠儲存此種容器型別最大可能容器的大小 |
| `difference_type` | 帶符號整數型別,足夠儲存兩個迭代器之間的距離 |
| `value_type` | 元素型別 |
| `reference` | 元素的左值型別;與`value_type&`含義相同 |
| `const_reference` | 元素的左值型別,(即`const value_type&`) |
####2、構造列表
##### 1)、預設構造
> 構造一個沒有任何元素的空容器
```
list
-
using namespace std;
int main ( void )
{
list
-
#include
###### a.移動所有元素 將`x`容器中的所有元素移動到指定容器的迭代器`position`所指向的位置。 插入的第一個元素置於迭代器`position`所指向的位置 原先位置的元素置於被插入的最後一個元素的後面。(兩容器的大小均已改變) 注意和`insert`的區別,`splice`相當是把元素插入在了`position`的前面 > `void splice ( iterator position, list &x );` ###### c.單一元素移動 將`x`容器中,迭代器`i`所指向的元素移動到`list`容器中,迭代器`position`所指向的位置之前. > `void splice (iterator position, list& x, iterator i);` ###### c.範圍元素移動 將範圍`[first,last)`內的元素從`x`移動到`list`容器中`position`所指向的位置之前。 > `void splice (iterator position, list& x, iterator first, iterator last);` 關於`splice`的具體操作請見程式碼: ``` // splicing lists #include
-
int main ()
{
std::list
-
// a predicate implemented as a function:
bool single_digit (const int& value) { return (value<10); }
// a predicate implemented as a class:
struct is_odd {
bool operator() (const int& value) { return (value%2)==1; }
};
int main ()
{
int myints[]= {15,36,7,17,20,39,4,1};
std::list