【C++】list的使用方法
2017-09-03 20:17
239 查看
list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。 与vector相比, 它允许快速的插入和删除,但是随机访问却比较慢.
首先我们来看一下list都有哪些接口:
list中常用的函数
front() 返回第一个元素
back():返回最后一个元素
注意:list中元素是空的时候,这时候调用front()和back()会发生什么呢?实际上会发生不能正常读取数据的情况,但是这并不报错,那我们编程序时就要注意了,个人觉得在使用之前最好先调用empty()函数判断list是否为空。
begin():返回指向第一个元素的迭代器,通过调用list容器的成员函数begin()得到一个指向容器起始位置的iterator
end() 返回末尾的迭代器 ,可以调用list容器的 end() 函数来得到list末端下一位置。
pop_back():删除最后一个元素
pop_front():删除第一个元素
push_back():在list的末尾添加一个元素
push_front():在list的头部添加一个元素
运行结果:
assign():给list赋值
clear():删除所有元素
empty():判断list是否为空,如果list是空的则返回true
erase(): 删除一个元素
insert():插入一个元素到list中
max_size():返回list能容纳的最大元素大小
merge():合并两个list
remove():从list删除指定元素,如果该元素存在,则将list中的所有该元素删除,如果不存在,则不发生任何变化
resize():改变list的大小
reverse():把list的元素逆置
size():返回list中的元素个数
sort():给list排序
swap():交换两个list
unique():删除list中重复的元素
首先我们来看一下list都有哪些接口:
list中常用的函数
front() 返回第一个元素
back():返回最后一个元素
注意:list中元素是空的时候,这时候调用front()和back()会发生什么呢?实际上会发生不能正常读取数据的情况,但是这并不报错,那我们编程序时就要注意了,个人觉得在使用之前最好先调用empty()函数判断list是否为空。
begin():返回指向第一个元素的迭代器,通过调用list容器的成员函数begin()得到一个指向容器起始位置的iterator
end() 返回末尾的迭代器 ,可以调用list容器的 end() 函数来得到list末端下一位置。
pop_back():删除最后一个元素
pop_front():删除第一个元素
push_back():在list的末尾添加一个元素
push_front():在list的头部添加一个元素
void print_list(const list<int>& l) { list<int>::const_iterator it = l.begin(); while (it != l.end()) //end()相当于:int a 中的第n+1个位置a ,实际上是不存在的,不能访问,经常作为循环结束判断结束条件使用 { cout << *it << " "; ++it; } cout << endl; } void test_list() { list<int> l; //从头部向list中插入数据 l.push_front(3); l.push_front(2); l.push_front(1); //从尾部向list中插入数据 l.push_back(4); l.push_back(5); l.push_back(6); print_list(l); //从头部删除数据 l.pop_front(); //从尾部删除数据 l.pop_back(); print_list(l); //获取第一个元素和最后一个元素 cout << "第一个元素:" << l.front() << endl; cout << "最后一个元素:" << l.back() << endl; }
运行结果:
assign():给list赋值
void test_list() { list<int> l1; l1.push_back(1); l1.push_back(2); l1.push_back(3); l1.push_back(4); l1.push_back(5); //将 l1中元素变为3个10。 l1.assign(3, 10); print_list(l1); list<int> l2; l2.push_back(7); l2.push_back(8); l2.push_back(9); l2.push_back(10); //将l2中的从l2.begin()到l2.end()之间的数值赋值给l1 l1.assign(l2.begin(), l2.end()); print_list(l1); }
clear():删除所有元素
empty():判断list是否为空,如果list是空的则返回true
erase(): 删除一个元素
//将l1的第一个元素删除。 l1.erase(l1.begin()); // 将l1的从begin()到end()之间的元素删除 l1.erase(l1.begin(), l1.end());
insert():插入一个元素到list中
//在l1的开始位置插入100。 l1.insert(l1.begin(), 100); //在l1的开始位置插入2个100。 l1.insert(l1.begin(), 2, 100); //在l1的开始位置插入l2的从开始到结束的所有位置的元素 l1.insert(l1.begin(), l2.begin(), l2.end());
max_size():返回list能容纳的最大元素大小
list<int> l1; cout << l1.max_size() << endl;
merge():合并两个list
void test_list() { list<int> l1; l1.push_back(1); l1.push_back(2); l1.push_back(3); print_list(l1); list<int> l2; l2.push_back(4); l2.push_back(5); l2.push_back(6); l1.merge(l2); print_list(l1); print_list(l2); }
remove():从list删除指定元素,如果该元素存在,则将list中的所有该元素删除,如果不存在,则不发生任何变化
list<int> l1; l1.push_back(1); l1.push_back(4); l1.push_back(2); l1.push_back(4); l1.push_back(3); l1.push_back(4); print_list(l1); l1.remove(4); print_list(l1); l1.remove(40); print_list(l1);
resize():改变list的大小
reverse():把list的元素逆置
size():返回list中的元素个数
sort():给list排序
swap():交换两个list
unique():删除list中重复的元素
void test_list() { list<int> l1; l1.push_back(3); l1.push_back(1); l1.push_back(2); l1.push_back(4); l1.push_back(4); l1.push_back(2); print_list(l1); list<int> l2; l2.push_back(4); l2.push_back(5); l2.push_back(6); //将l1大小改为8 l1.resize(8); cout << l1.size() << endl; //逆置l1 l1.reverse(); print_list(l1); //给l1排序 l1.sort(); print_list(l1); //交换l1和l2 l1.swap(l2); print_list(l1); //删除l2中重复的元素 l2.unique(); print_list(l2); }
相关文章推荐
- C++ 实现类似java c#List的方法 boost::any的使用
- C++ STL入门教程(2) list双向链表使用方法(附程序代码)
- C++ 标准库 vector list map使用方法
- C++控件:ListControl列表控件的使用方法
- C++中list的使用方法及常用list操作总结
- C++的list使用方法
- C++控件:ListControl列表控件的使用方法
- C++模板库 list 的使用方法总结
- C++STL库 vector map list 使用方法
- C++ 标准库 vector list map 基本使用方法 示例程序
- C++ STL容器的使用方法(vector、queue、list、set、map)
- C++ 标准库 vector list map使用方法
- C++ 标准模板库STL 双向链表 list 使用方法与应用介绍(一)
- C++ 标准模板库STL 双向链表 list 使用方法与应用介绍(一)
- 转 C++ 标准库 vector list map使用方法
- C++ list 使用方法
- C++ 标准库 vector list map使用方法
- C++ 标准库 vector list map使用方法
- C++ 标准库 vector list map 基本使用方法 示例程序
- 如何正确使用List中的toArray()方法