C++ list (tcy)
1.1.說明:
std::list是順序容器是雙向連結串列;提供雙向迭代功能,但空間效率較低
雙向連結串列元素都有一指標指向後一元素,也有一指標指向前一個元素
支援從容器中任何位置插入和刪除元素。不支援快速隨機訪問。
新增,刪除和移動列表中或多個列表中的元素不會使迭代器或引用無效。
僅當刪除相應的元素時,迭代器才無效。
1.2.注意:
不支援使用下標隨機存取元素
1.3.函式:
函式 | 例項 | 說明 |
建構函式 | ||
operator= | ||
assign(lst.begin(),lst.end()) | 分配 | |
get_allocator | 返回關聯的分配器 | |
Element access元素訪問 | ||
const int &front()const | lst.front(); | 返回陣列首元素值 |
back() | lst.back(); | 訪問最後一個元素 |
Iterators迭代器 | ||
begincbegin | 將迭代器返回到開頭 | |
endcend | 將迭代器返回到末尾 | |
rbegincrbegin | 將反向迭代器返回到開頭 | |
rendcrend | 將反向迭代器返回到末尾 | |
Capacity容量 | ||
bool empty() const; | 檢查容器是否為空 | |
size_t lst.size() const; | 返回元素數 | |
size_t max_size() | 返回最大可能的元素數 | |
void resize(size_t newsize) | 更改儲存的元素數 =size() | |
操作 | ||
void unique() | 刪除連續的重複元素 | |
void remove(value) | 刪除指定值,不存在忽略 | |
remove_if() | 刪除滿足特定條件的元素 | |
iterator erase(iterator position); | 刪除迭代器所指元素;返回下一個元素的迭代器 | |
void pop_front() | 刪除第一個元素 | |
void pop_back() | 刪除最後一個元素 | |
erase(std::list) | ||
erase_if(std::list) | 擦除所有滿足特定條件的元素 | |
clear() | 清除容器全部內容 | |
void push_front(const &T Val) | 元素插入頭部; | |
void push_back(const &T Val) | 在末尾新增一個元素 | |
iter insert(iter pos, const &T val); | lst.insert(lst.begin()+2,0); | 在迭代器所指向元素前插入val |
void splice(iterator i, list <T> & x, iterator first, iterator last) | 在位置i前插入 x [first, last),x刪除該區間。連結串列可是同一連結串列且i 不在 [first, last) | |
void merge(list <T> & x) | 合併x到尾部並清空 x。要求二個都是有序 | |
emplace(T value) | 就地構造元素 | |
emplace_front() | 在開始處就位構造一個元素 | |
emplace_back() | 在末尾就位構造一個元素 | |
Operations運作方式 | ||
void sort() | 對元素進行排序 | |
void reverse() | 反轉元素的順序 | |
swap(std::list) | 交換內容 |
2.例項
#include <iostream>
#include <list>
#include <assert.h>
using namespace std;
#define print_list(lst) \
{ cout << "["; \
for (auto v:lst) \
cout << v << ",";\
cout << "]" << endl; \
}
int main() {
//建構函式:
int arr[6] = { 1,3,2,5,2,3 };
int arr1[5] = {1,3,2,4,6 };
list<int> lst(arr, arr + 6);
list<int> lst1(arr1, arr1 + 5);
list<int> lst2{ 10,13,14 };
list<int> lst3 = lst2,lst4;
lst4.assign(lst2.begin(), lst2.end());
list<int>::iterator it;//it++;合法 it+1;不合法
//獲取元素:
cout << lst.front() <<"="<< *lst.begin() << endl;//1 1首元素
cout << lst.back() << endl;//3 尾元素
cout << lst.size() <<","<<lst.max_size()<< endl;//6,768614336404564650
lst.resize(8);
cout << lst.size() << "," << lst.max_size() << endl;//10, 768614336404564650
assert(lst.empty() == false);
//刪除:
lst.sort();
lst.unique(); print_list(lst);//刪除相鄰重複元素
lst.pop_front(); print_list(lst);//刪除首元素
lst.remove(5); print_list(lst);//刪除元素5,若不存在忽略
//排序:
lst.sort(); print_list(lst);
lst.reverse(); print_list(lst);//反序
//使用merge
lst.sort(); lst1.sort();
lst.merge(lst1); print_list(lst); print_list(lst1);//lst=slt+lst1 lst1=空
//附加:
print_list(lst4); print_list(lst2);
for(auto it=lst2.begin();it!=lst2.end();it++)//lst4=lst4+lst2;lst2不變
lst4.push_back(*it);
print_list(lst4); print_list(lst2);
//遍歷元素:
for (auto it = lst.begin(); it != lst.end(); ++it) {
cout << *it << "," << endl;
}
return 0;
}
相關文章
- SWIG 打包C++陣列供python呼叫 tcyC++陣列Python
- C++ STL listC++
- C++ STL -- listC++
- C++ list eraseC++
- c++ list sort方法C++
- 46 pandas reindex-重新索引(tcy)Index索引
- A list of open source C++ librariesC++
- C++ STL list連結串列C++
- c++中的查詢list元素C++
- C++中list的使用方法及常用list操作總結C++
- os ,shutil,send2trash模組彙總(tcy)
- c/c++ 標準容器 forward_list resize 操作C++Forward
- C++ forward_list 中插入和刪除操作C++Forward
- C++ std::list實現大整數加法運算C++
- C++三種容器:list、vector和deque的區別C++
- C# List 用法list<>C#
- Python List 列表list()方法Python
- list
- Hql總結 查詢結果動態組裝成List(map),List(bean),List(list),List(set)等格式(轉)Bean
- Python List 列表list()方法分享Python
- int[] 、 list<int> 、 list<int>[] 的區別
- redis listRedis
- list initialization
- 省市list
- List 按照指定大小分割為多個list的幾種方式,list分片
- [轉]C++ STL list的初始化、新增、遍歷、插入、刪除、查詢、排序、釋放C++排序
- python listPython
- SCSS list 列表CSS
- List面試題面試題
- java集合-ListJava
- Java 集合 ListJava
- sticky list item
- list chained rowAI
- LIST Partitioning
- 口胡list
- Int -> List | List -> Int _ CodingPark程式設計公園程式設計
- list-style與list-style-type的區別
- python列表(List)Python