首页 > 其他分享 >5-11打卡,交换两个list容器的区间的元素

5-11打卡,交换两个list容器的区间的元素

时间:2023-05-11 20:23:28浏览次数:57  
标签:11 p2 p1 end list l2 l1 打卡

10-6编写一个具有以下原型的函数模板:
template
void exchange (list& 11, list:: iterator pl, list & 12, list::
iterator p2);
该模板用于将l1链表的[p1,l1.end())区间和l2链表的[p2,l2.end())区间的内容
交换。在主函数中调用该模板,以测试该模板的正确性。

#include <iostream>
#include <list>
using namespace std;

// function template to exchange the contents of two list segments
template <class T>
void exchange (list<T>& l1, typename list<T>::iterator p1, list<T>& l2, typename list<T>::iterator p2) {
  // swap the elements from p1 to l1.end() with the elements from p2 to l2.end()
  while (p1 != l1.end() && p2 != l2.end()) {
    swap(*p1, *p2);
    p1++;
    p2++;
  }
  // if one list segment is longer than the other, append the remaining elements to the other list
  if (p1 != l1.end()) {
    l2.splice(l2.end(), l1, p1, l1.end());
  }
  else if (p2 != l2.end()) {
    l1.splice(l1.end(), l2, p2, l2.end());
  }
}

// main function to test the template
int main() {
  // create two lists of integers
  list<int> l1 = {1, 2, 3, 4, 5};
  list<int> l2 = {6, 7, 8};

  // print the original lists
  cout << "l1: ";
  for (int x : l1) {
    cout << x << " ";
  }
  cout << endl;
  
  cout << "l2: ";
  for (int x : l2) {
    cout << x << " ";
  }
  cout << endl;

  // get iterators to the second element of each list
  auto p1 = l1.begin();
  p1++;
  auto p2 = l2.begin();
  p2++;

  // call the exchange template function
  exchange(l1, p1, l2, p2);

  // print the modified lists
  cout << "After exchange:" << endl;
  
  cout << "l1: ";
  for (int x : l1) {
    cout << x << " ";
  }
  cout << endl;
  
  cout << "l2: ";
  for (int x : l2) {
    cout << x << " ";
  }
  cout << endl;

  return 0;
}


标签:11,p2,p1,end,list,l2,l1,打卡
From: https://www.cnblogs.com/wlxdaydayup/p/17392130.html

相关文章

  • 第20天打卡
    问题; 算法设计;先求出所有的因子,在判断他们相加是否等于这个数即可源代码:#include<stdio.h>intmain(){ inti,j,n,s; scanf("%d",&n); for(i=2;i<=n;i++) { s=0; for(j=1;j<i;j++) { if(i%j==0) s+=j; } if(s==i) printf("%d\n",i); }}......
  • 2023.5.11编程一小时打卡
    一、问题描述:完成“学生cpp成绩计算”之后,修改Person和Student类,各自增加两个无参构造函数。仍以Person类为基础,建立一个派生类Teacher,增加以下成员数据:intID;//教师工号Studentstu[100];//学生数组intcount;//学生数目,最多不超过100floatcpp_average;//班......
  • [NOIP2011 普及组] 数字反转
    [NOIP2011普及组]数字反转题目描述给定一个整数\(N\),请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。输入格式一个整数\(N\)。输出格式一个整数,表示反转后的新数。样例#......
  • 2023年5月11日19:31:14
    如果不写可能自己都忘了吧。今天我终于把三更那个个人博客做完了,前面跟着他做,后面他让我们自己做,挺好的,毕竟都是一些重复的东西,自己真 正的学到了很多很多。挺开心的。下一步就是把这个项目上线,如果能够再美化一下前端就好了,所以我还要去学一点前端,但是这个计划不知道什么时候......
  • 5.11 2.6
    一、问题描述一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数,该数仍为五位数。问该车的速度是多少?新的对称数是多少?二、分析司机在上午10点看到里程表......
  • 5.11
    #include<stdio.h>main(){inti,j,s,n;printf("请输入所选范围上限:");scanf("%d",&n);for(i=2;i<=n;i++){s=0;for(j=1;j<i;j++){if(i%j==0)s+=j;}if(s==i)printf("Itisaperfectnumber:%d.\n",i);}}......
  • 5.11总结
    DropTABLEIFEXISTStb_order;DropTABLEIFEXISTStb_goods;--订单表--表实现多对多--实现方式:建立第三方中间表,中间表至少包含两个外键,分别关联两方主键CREATETABLEtb_order(idINTprimarykeyauto_increment,paymentDOUBLE(10,2),payment_typeTINYINT,sta......
  • Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consid
    这个警告意味着在事件监听器中,添加了一个阻止页面滚动的`mousewheel`事件,但是该事件监听器并没有标记为被动事件监听器(passiveeventlistener)。这可能会导致页面滚动变得不流畅,特别是在移动设备上。为了解决这个问题,您需要将事件监听器标记为被动事件监听器。具体实现方法如下......
  • python3.11 支持TA-lib
    网上找了很多地方才找到的,以下是原网面内容分享给大家:原网址python3.11支持TA-lib-简书(jianshu.com) python3.11支持TA-libasmcos关注IP属地:北京2022.11.0316:42:52字数122阅读1,075做量化的朋友都知道Ta-lib的windows库相当难编译。python3.11性能提升......
  • Codeforces 543E - Listening to Music(分块)
    根号log做法。能过CF的数据,但过不了校内模拟赛的数据/tuu考虑从\(f(i,x)\)到\(f(i+1,x)\)的变化在哪里:少了个\(a_i\)多了个\(a_{i+m}\),因此显然只有\(x\)在它俩中间才有\(f(i,x)\nef(i+1,x)\),即:\[f(i+1,x)-f(i,x)=\begin{cases}-1&(a_i<x\lea_{i+m})\\1&(a_{i+m......