C++ STL 容器部分有关list 链表容器的基本操作
2018-03-22 14:14
495 查看
#include<iostream> using namespace std; #include "list" //list模型的头文件 /*总结*/ //相当于一个双向链表 //1 list基本与其余容器模型差不多类似 注意一点就是不允许随机插入 //2 区间删除 注意! 如果是l1.erase(0,3); 就会删除 位置 0 1 2 但是位置3不会被删除 这就是一个左闭右开区间 【 )(这里0 3 代表迭代器的位置 ) //3 与其余容器相同也可以放置类对象,或者指针 //4 有一个remove函数比较特殊 表示删除链表中相同的元素 //5 链表的结点index序号是从0号位置开始的 ,例如在3号位置插入,则原来的三号位置会变成4号位置 4号变成5号位置 //list 链表模型的基本操作 void main71() { list<int> l1; cout << "list的长度:" << l1.size() << endl; for (int i = 0; i < 10; i++) { l1.push_back(i); //list的尾插法 } list<int>::iterator it = l1.begin(); //有关迭代器的操作 cout << "打印输出:"; while (it != l1.end()) { cout << *it << " "; it++; } cout << endl; cout << "list的长度:" << l1.size() << endl; //list不允许随机访问 it = l1.begin(); //重新定义迭代器 it++; //it = it + 2; //这里会报错,说明问题 it = l1.begin(); //重新定义迭代器 此时it指向0号位置 it++; //将迭代器向后加一,指向1号位置 it++; //此时应该指向2号位置 l1.insert(it, 100); //代表在it位置处插入元素100 并且原it位置元素后移一位 cout << "打印插入后的链表:" ; list<int>::iterator it1 = l1.begin(); //有关迭代器的操作 while (it1 != l1.end()) { cout << *it1 << " "; it1++; } } //list链表的删除操作 void main72() { list<int> l1; cout << "list的长度:" << l1.size() << endl; for (int i = 0; i < 10; i++) { l1.push_back(i); //list的尾插法 } list<int>::iterator it = l1.begin(); //有关迭代器的操作 list<int>::iterator it1 = l1.begin(); //有关迭代器的操作 cout << "打印输出:"; while (it != l1.end()) { cout << *it << " "; it++; } cout << endl; //区间删除 注意! 如果是l1.erase(0,3); 就会删除 位置 0 1 2 但是位置3不会被删除 这就是一个左闭右开区间 【 )(这里0 3 代表迭代器的位置 ) it = l1.begin(); //指向位置0 it1++; it1++; it1++; //移向位置3出 0 1 2 3 l1.erase(it, it1); cout << "打印输出删除之后1:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } //指定位置删除 l1.erase(l1.begin()); //删除链表首个元素 cout << endl; cout << "打印输出删除之后2:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } //指定元素删除 例如删除所有的3 l1.insert( l1.begin(),3); l1.insert(l1.begin(), 3); l1.insert(l1.begin(), 3); cout << endl; cout << "链表的初始化:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } cout << endl; l1.remove(3); //将链表中的元素3都删除 cout << "指定元素删除之后:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } } int main() { //main71(); //list的基本操作 main72();//list链表的删除操作 system("pause"); return 0; }
相关文章推荐
- C++ STL 有关容器部分 priority_queue 优先级队列的基本操作以及认识案例
- C++ STL中容器部分 有关栈模型 Stack的基本用法 20180322 day12
- C++ STL容器部分 有关queue 队列模型的 一些基本API函数的使用
- C++ STL之list容器的基本操作
- C++ STL之list容器的基本操作
- C++ STL中容器部分 有关deque(双端数组形式)的初始化 元素插入 遍历 以及distance()函数的使用 20180322day12
- C++ STL基本容器string,vector,list,deque,map..[转]
- C++ STL中涉及到关联容器部分有关multimap的内容
- C++ STL 容器技术 之 list双向链表容器
- c++ list 链表 基本操作和使用
- C++ STL 容器技术 之 list双向链表容器
- C++STL容器的基本操作
- C++STL之list双向链表容器
- C++ STL基本容器的使用(vector、list、deque、map、stack、queue)
- 【C++】STL常用容器总结之四:链表list
- C++ STL 容器技术 之 list双向链表容器
- [C++ 从入门到放弃-07]C++STL之list双向链表容器
- C++ STL学习笔记四 list双向链表容器
- 浅谈STL list<T>链表容器和迭代器的使用C++实现
- C++ STL 标准模板库的学习 (一) 有关容器,算法,迭代器的基本认识 20180319 day10