做网站学好哪些软件,网站建设具体要求,那个网站ppt做的比较好,linu安装wordpress目录
1、list的使用
1.1 list的构造
1.2 list的遍历
1.3 list capacity
1.4 list element access
1.5 容量相关 list是一个带头双向循环链表
1、list的使用
1.1 list的构造 1.2 list的遍历
list只有两种遍历方式#xff0c;因为没有operator[] 因为list的双向链表因为没有operator[] 因为list的双向链表所以是支持反向迭代器的像forword_list是单链表则只能支持正向迭代器
int main()
{listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);listint::iterator it lt.begin();while (it ! lt.end()){cout *it ;it;}cout endl;for (auto e : lt){cout e ;}return 0;
}
1.3 list capacity 1.4 list element access 1.5 容量相关 迭代器的分类 支持的操作接口的角度单向(forword_list)、双向(list)、随机(vector) 使用场景角度(正向迭代器反向迭代器) const迭代器 forword_list的迭代器只能正着走 list的迭代器即可正着走也可反着走 vector的迭代器即可正着走也可反着走还可以即一下子跳跃几个 list的迭代器是不支持的即一次只能前进或后退一个 int main()
{listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);listint::iterator it lt.begin();//在3的前面插入一个30lt.insert(lt.begin() 2, 30);//这样是会报错的正确的做法是使用find先找到return 0;
}
int main()
{listint lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);listint::iterator pos find(lt.begin(), lt.end(), 3);//这里一定要判断一下因为若没找到会变成尾插而想要的是在3之后插入变成尾插是错的if (pos ! lt.end()){lt.insert(pos, 30);}return 0;
}
关于list的迭代器失效问题在vector中只要是扩容操作或erase操作都可能导致迭代器失效而list中只有erase操作才会导致迭代器失效 clear是清空链表中除了头节点以外的所有结点 splice是将一个链表连接到另一个链表中 remove是找到所给的值并直接将这个值删除 sort可对链表中的值排序 reverse是对链表进行逆置