#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 容器部分有关list 链表容器的基本操作
最新推荐文章于 2024-08-07 18:38:58 发布