当前位置: 首页 > 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.hkea.cn/news/14422346/

相关文章:

  • 长春网站公司有哪些内容红酒网页设计图片
  • 宁波营销型网站建设首选wordpress站内信
  • 山西城乡与住房建设厅网站美橙互联 网站备案
  • 苏州做网站的公司有哪些展示类网站cms
  • 网站建设公司如何盈利wordpress 安装要求
  • 做购物网站的业务老牌网站建设
  • 扬州做阿里巴巴的公司网站优化seo搜索排名
  • 企业网站建设需要考虑内容淄博临淄网站建设
  • 某公司人事管理网站开发网站广告接入
  • 武进做网站的公司个人网站 费用
  • 广州 创意的网站设计做菠菜网站判多久
  • 网站源码怎么写山西企业模板建站信息
  • 王晴儿网站建设玩具网站建设
  • 保健品网站可以做网站微信文章导入wordpress
  • 菜鸟教程网站是怎么做的吉林电商网站建设
  • 网站建设产品中心重庆市建设考试报名网站
  • 外贸网站建设如何做推广运营是做什么的
  • 公司网站建设电话南通五建宏业建设工程有限公司网站
  • 网站开发外包平台西宁做网站的好公司
  • 深圳网站建设网站设计软文推广怎么建设两个大淘客网站
  • 怎样才能建设只是于自己的网站中山百度首页推广
  • 广州海珠区赤岗 新港网站建设公司高稳定性的网站设计制作
  • wordpress刷量插件网站页脚优化怎么做
  • 农林网站建设公司上海营销型网站制作
  • 网站建设汇报方案ppt做网站必须用域名吗
  • 网站建设的有什么需求企业网站建设 新天地网络
  • 网站收录低的原因优化师证书
  • 收录网站是怎么做的常州商城网站建设
  • 代码网站建设红河县网站建设
  • 广东营销式网站做百度网站分录