C++ 之list用法

使用 list 时,需包含有文件< list>
.

一、定义及初始化

// 默认构造函数,长度为0
 list lis1;
 
 // 定长构造函数及初始值
 list lis2(50);
 list lis3(50,1);
 
 // 复制构造函数
 list lis4(lis3);
 list lis5(lis3.begin(),lis3.end());

二、赋值(assign)

// 将 list中元素变为n个val。
list.assign(n,val)

// 将list2中的从list2.begin()到list2.end()之间的数值赋值给list1。
list1.assign(list2.begin(),list2.end())

三、获取长度(size)

// 获取list长度
list.size();

四、改变大小(resize)

// 将list长度改为只容纳n个元素,超出部分删除
list.resize(n);

// 将list长度改为只容纳n个元素,并赋初值val,超出部分删除
list.resize(n,val)

五、链表访问

// 通过迭代器访问链表
for(list::iterator iter = list.begin(); iter != list.end(); iter++){
    cout << *iter; 
}

六、插入元素(push_front、push_back、insert)

// 在list首部插入
list.push_front();

// 在list尾部插入
list.push_back();

// 在list的开始位置插入10。
list.insert(list.begin(),10); 

// 在list的开始位置插入2个20。
list.insert(list.begin(),2,20); 

// 在list1的开始位置插入list2的从开始到结束的所有位置的元素
list1.insert(list1.begin(),list2.begin(),list2.end());

七、删除元素(pop_front、pop_back、erase)

// 删除list首部
list.pop_front();

// 删除list尾部
list.pop_back();

// 将list的第一个元素删除。
list.erase(list.begin()); 

// 将list的从begin()到end()之间的元素删除。
list.erase(list.begin(),list.end());

// 原理是依次将非删去元素复制到前面,建议使用自带函数
remove(v.begin(), v.end(), 5);
list.remove(5)

八、交换、反转、合并(swap、reverse、merge)

// 交换两个链表的元素
swap(list1, list2)

// 反转链表中的元素
reverse(list.begin(), list.end());
   
// 合并两个链表元素并排序
list1.merge(list2,greater());

九、排序(sort)

// 默认情况下升序排列
sort(list.begin(), list.end()); 

// 可自定义排序方式(此为降序)
bool Comp(const int &a, const int &b){
	return a>b;
}
sort(list.begin(), list.end(), Comp);

// 亦可函数内部自定义 
sort(list.begin(), list.end(), [](int &a, int &b){return a>b;});  

十、清除和空判断(clear、empty)

// 清除链表中的数据
list.clear();

// 判断链表是否为空
list.empty();

你可能感兴趣的:(基本算法知识)