当前位置: 首页 > news >正文

网址大全浏览器下载东莞网站优化指导

网址大全浏览器下载,东莞网站优化指导,网络推广是什么工作内容,帝国网站程序[STL]list使用 注#xff1a;本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop…[STL]list使用 注本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop_front函数insert函数和erase函数swap函数resize函数clear函数 6. 数据操作函数sort函数reverse函数merge函数unique函数remove函数splice函数 1. list介绍 list是可以在常量时间内在任意位置进行插入和删除的序列式容器并且该容器可以前后双向迭代。list的底层是双向链表结构双向链表中每个元素存储在互不相关的独立节点中在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似最主要的不同在于forward_list是单链表只能朝前迭代已让其更简单高效。与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率更好。与其他序列式容器相比list和forward_list最大的缺陷是不支持任意位置的随机访问比如要访问list 的第6个元素必须从已知的位置(比如头部或者尾部)迭代到该位置。 2. 构造函数 (1)构造函数 默认构造函数。 listint l; //创建一个空list(2)构造函数 创建一个有n个结点结点数据为val的list。 listint l(10, 66); (3)构造函数 使用迭代器构造列表。 vectorint v(10, 6); listint l(v.begin(), v.end()); //创建一个存储int类型的链表使用v初始化数据(4)构造函数 拷贝构造函数 listint l1(10,6); listint l2(l1); //使用l2拷贝构造l13. 迭代器相关函数 begin函数和end函数 begin函数 返回指向list第一个结点的正向迭代器。 end函数 返回指向list结尾的正向迭代器。 #include iostream #include list #include vector using namespace std; int main() {vectorint v;v.push_back(1); //在list中尾插数据1v.push_back(2); //在list中尾插数据2v.push_back(3); //在list中尾插数据3v.push_back(4); //在list中尾插数据4listint l(v.begin(), v.end());listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; //输出为 1 2 3 4return 0; }rbegin函数和rend函数 rbegin函数 返回指向list最后一个含有数据的结点的反向迭代器。 rend函数 指向list反向结尾的反向迭代器。 #include iostream #include list #include vector using namespace std; int main() {vectorint v;v.push_back(1); //在list中尾插数据1v.push_back(2); //在list中尾插数据2v.push_back(3); //在list中尾插数据3v.push_back(4); //在list中尾插数据4listint l(v.begin(), v.end());listint::reverse_iterator it l.rbegin();while (it ! l.rend()){cout *it ;it;}cout endl; //输出为 4 3 2 1return 0; }4. 容量相关函数 empty函数 判断list是否为空. #include iostream #include list #include vector using namespace std; int main() {listint l1;listint l2(5, 6);cout l1.empty() endl;//输出为1cout l2.empty() endl;//输出为0return 0; } size函数 获取list存储的结点个数。 #include iostream #include list #include vector using namespace std; int main() {vectorint v;v.push_back(1); //在list中尾插数据1v.push_back(2); //在list中尾插数据2v.push_back(3); //在list中尾插数据3v.push_back(4); //在list中尾插数据4listint l(v.begin(), v.end());cout l.size() endl; //输出为4return 0; }5. 数据修改函数 push_back函数和pop_back函数 push_back函数 在list结尾插入结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);cout l.size() endl; //输出为3return 0; }pop_back函数 在list结尾删除结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);cout l.size() endl; //输出为3l.pop_back();l.pop_back();cout l.size() endl; //输出为1l.pop_back();//l.pop_back(); -- 报错 -- 没有结点可删return 0; }push_front函数和pop_front函数 push_front函数 在list中头插结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_front(1);l.push_front(2);l.push_front(3);l.push_front(4);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 4 3 2 1return 0; }pop_front函数 在list中头删结点。 #include iostream #include list using namespace std; int main() {listint l;l.push_front(1);l.push_front(2);l.push_front(3);l.push_front(4);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl;l.pop_front();l.pop_front();it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 2 1return 0; }insert函数和erase函数 和vector容器类似list容器也没有提供find函数而insert函数和erase函数是需要配合迭代器使用的因此需要使用算法库的find函数。 find函数查找成功会返回指向数据的迭代器失败会返回传入的last迭代器注意find函数的查找范围是从first迭代器至last迭代器前不包括last迭代器。 insert函数 功能1 在某一位置插入结点。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);listint::iterator pos find(l.begin(), l.end(), 2);l.insert(pos, 66);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; //输出为1 66 2 3 4return 0; }功能2 在某一位置插入n个存储相同数据的结点。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);listint::iterator pos find(l.begin(), l.end(), 2);l.insert(pos, 3, 66);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; //输出为1 66 66 66 2 3 4return 0; }功能3 传入其他list容器或者其他类型容器的迭代器将传入的迭代器区间内的数据插入。 #include iostream #include list #include algorithm using namespace std; int main() {listint l1(3, 66);listint l2;l2.push_back(1);l2.push_back(2);l2.push_back(3);listint::iterator pos find(l2.begin(), l2.end(), 2);l2.insert(pos, l1.begin(), l1.end());listint::iterator it l2.begin();while (it ! l2.end()){cout *it ;it;}cout endl; //输出为1 66 66 66 2 3return 0; }erase函数 功能1 删除迭代器指向的结点。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);listint::iterator pos find(l.begin(), l.end(), 2);l.erase(pos);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 1 3return 0; }功能2 将迭代器范围的结点都删除。 #include iostream #include list #include algorithm using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);l.push_back(5);listint::iterator start find(l.begin(), l.end(), 2);listint::iterator finish find(l.begin(), l.end(), 5);l.erase(start, finish);listint::iterator it l.begin();while (it ! l.end()){cout *it ;it;}cout endl; // 输出为 1 5return 0; }swap函数 将两个list数据交换通过交换list指向的头结点实现。 #include iostream #include list using namespace std; int main() {listint l1(3, 66);listint l2;l2.push_back(1);l2.push_back(2);l2.push_back(3);l1.swap(l2);listint::iterator it1 l1.begin();while (it1 ! l1.end()){cout *it1 ; //输出为 1 2 3it1;}cout endl;listint::iterator it2 l2.begin();while (it2 ! l2.end()){cout *it2 ; //输出为 66 66 66it2;}cout endl;return 0; }resize函数 如果n size, 会将结点删除至list只有n个结点由于list结点的释放成本是不高的因此不同于vector只是将末尾指向修改list会实际上的在调用resize函数时的删除结点。如果n size就将插入结点使得list有n个结点 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);l.push_back(5);cout l.size() endl; //输出为5l.resize(3); // n sizecout l.size() endl; //输出为3l.resize(6); // n sizecout l.size() endl; //输出为6return 0; }clear函数 释放所有结点使得list为空链表。 #include iostream #include list using namespace std; int main() {listint l(66, 6);cout l.size() endl; // 输出为66l.clear();cout l.size() endl; // 输出为0return 0; }6. 数据操作函数 sort函数 对list中的数据进行排序。 #include iostream #include list using namespace std;int main() {listint l1;l1.push_back(2);l1.push_back(1);l1.push_back(4);l1.push_back(7);l1.push_back(5);l1.push_back(9);l1.push_back(8);l1.sort();listint::iterator it l1.begin();it l1.begin();while (it ! l1.end()){cout *it ; //输出为: 1 2 4 5 7 8 9it;}return 0; }注 由于list是链表实现的迭代器是双向迭代器因此不能调用algorithm库内的sort函数因此需要单独设计sort函数但是list的sort函数由于结构原因导致性能不高。 reverse函数 将list内的结点逆置。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);listint::iterator it l.begin();while (it ! l.end()){cout *it ; //输出为: 1 2 3 4it;}l.reverse(); //将list逆置it l.begin();while (it ! l.end()){cout *it ; //输出为: 4 3 2 1it;}cout endl;return 0; }merge函数 如果两个list有序并且排序方式相同可以将一个list的结点连接到另一个list上并保持有序排序方式和连接前相同。 #include iostream #include list using namespace std; int main() {listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);listint l2;l2.push_back(6);l2.push_back(7);l2.push_back(8);l2.push_back(9);l2.merge(l1); //将l1的结点连接到l2连接后l1为空listint::iterator it l2.begin();while (it ! l2.end()){cout *it ;it;}cout endl;return 0; }unique函数 只能给数据有序的list进行数据去重操作如果数据无序去重操作会出现问题。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(2);l.push_back(2);l.push_back(3);l.push_back(3);l.push_back(3);l.push_back(4);l.unique(); //对list内的数据去重listint::iterator it l.begin();while (it ! l.end()){cout *it ; // 输出为: 1 2 3 4it;}cout endl;return 0; }remove函数 查找对应的数据并进行删除操作数据存在就删除不存在不会进行任何操作。 #include iostream #include list using namespace std; int main() {listint l;l.push_back(1);l.push_back(2);l.push_back(3);l.push_back(4);l.remove(3); //删除数据为3的结点listint::iterator it l.begin();while (it ! l.end()){cout *it ; //输出为: 1 2 4it;}cout endl;return 0; }splice函数 将以一个list的指定部分的结点转移给其他list。 #include iostream #include list using namespace std;int main() {listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);listint l2;l2.push_back(5);l2.push_back(6);l2.push_back(9);l2.push_back(8);listint::iterator it l1.begin();l1.splice(it, l2); //将l2的所有结点转移到l1的begin位置it l1.begin();while (it ! l1.end()){cout *it ; //输出为:5 6 9 8 1 2 3 4it;}return 0; }
http://www.zqtcl.cn/news/719003/

相关文章:

  • 三亚市住房和城乡建设厅网站wordpress适合企业网站模板
  • php网站建设思路方案中国空间站组合体
  • 帝国+只做网站地图厦门app定制公司
  • 网站运营推广主要做什么的高匿代理ip
  • 网站建设与维护采访稿wordpress 图床加速
  • 建设国际互联网网站完整网站开发教程
  • 一个购物交易网站怎么做网站管理功能图
  • 做有后台的网站如何提交网站地图
  • 网站建设税率多少潍坊市住房和城乡建设局网站
  • 网站图片怎么做白色背景青岛公司做网站的价格
  • 网站seo工具wordpress放视频没画面
  • 自己做个网站要多少钱o2o商城网站系统开发
  • 百度网站优化哪家好长沙抖音推广代运营公司
  • 做网站的软件worddede 后门暴网站
  • 极简风格 网站上市公司seo是什么意思
  • 商城手机网站设计网架公司十大排名
  • 在建设主题网站时邯郸房产信息网恋家网
  • 保山做网站建设做网站zwnet
  • 南阳做网站推广自助个人免费网站
  • 企业做网站怎么做高校档案室网站建设
  • 辽宁省建设厅网站升级期货交易软件定制开发
  • 网站建设公司工资设置mufen wordpress
  • 资阳网站网站建设月夜直播免费完整版
  • 自己的网站打不开了网站建设维护成本
  • 最便宜做网站c2c网站建站的标准
  • 家里电脑做网站服务器下载中国移动商旅100最新版本
  • 深圳建站公司开发费用做网站网页的工作怎么样
  • 网站工程师平均工资网站开发合同里的坑
  • 南通公司建站模板品牌网站建设小蝌蚪
  • 网站备案号 有效期微信小程序开发视频完整教程