首页 > 编程语言 >c++打卡第三十七天

c++打卡第三十七天

时间:2023-05-25 21:22:53浏览次数:32  
标签:begin list back c++ print 第三十七 push 打卡 include

二、list容器

1、基本概念

 

#include<iostream>
#include<list>
using namespace std;
//list
void print(list<int>&l) {
    for(list<int>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<*it<<" ";
    }
    cout<<endl;
}
void test01() {
    list<int>l;
    //添加数据 
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    l.push_back(4);
    print(l);
    //区间方式构造 
    list<int>l2(l.begin(),l.end() );
    print(l2);
    //拷贝构造
    list<int>l3(l2);
    print(l3); 
    //n个m
    list<int>l4(14,12);
    print(l4); 
     
}
int main() {
    test01();
    return 0;
}

2、排序案例

#include<iostream>
#include<list>
#include<string> 
using namespace std;
//list
//按年龄升序,如果年龄相同按身高降序排列。 
class person
{
    public:
    person(string name,int age,int height)
    {
        this->nname=name;
        this->nage=age;
        this->nheight=height;
    }
    public:
        string nname;
        int nage;
        int nheight;    
};
bool mycompare(person &p1,person &p2)
{
    if(p1.nage==p2.nage)
    {
        return p1.nheight>p2.nheight;
    }
    return p1.nage<p2.nage;
}
void test01() {
    list<person>l; 
    person p1("小名",18,175);
    person p2("小一",15,180);
    person p3("小二",13,126);
    person p4("小三",18,181);
    person p5("小四",15,175);
    l.push_back(p1);
    l.push_back(p2);
    l.push_back(p3);
    l.push_back(p4);
    l.push_back(p5);
    cout<<"排序前"<<endl;
    for(list<person>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<"姓名:"<<(*it).nname<<",年龄:"<<(*it).nage<<",身高:"<<(*it).nheight<<"。"<<endl;
    }
    cout<<"---------------------------------------------------------------------"<<endl;
    cout<<"排序后"<<endl;
    l.sort(mycompare);
     for(list<person>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<"姓名:"<<(*it).nname<<",年龄:"<<(*it).nage<<",身高:"<<(*it).nheight<<"。"<<endl;
    }
}
int main() {
    test01();
    return 0;
}

3、容器大小

#include<iostream>
#include<list>
using namespace std;
//list
void print(list<int>&l) {
    for(list<int>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<*it<<" ";
    }
    cout<<endl;
}
void test01() {
    list<int>l;
    //添加数据
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    l.push_back(4);
    print(l);
    if(l.empty() ) {
        cout<<"容器为空"<<endl;
    } else {
        cout<<"容器不为空"<<endl;
        cout<<"容器中元素个数:"<<l.size()<<endl;
    }
    l.resize(10);
    cout<<"容器大小为:"<<l.size()<<endl;
    print(l);
    l.resize(3);
    cout<<"容器大小为:"<<l.size()<<endl;
    print(l);

}
int main() {
    test01();
    return 0;
}

4、赋值与交换

#include<iostream>
#include<list>
using namespace std;
//list
void print(list<int>&l) {
    for(list<int>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<*it<<" ";
    }
    cout<<endl;
}
void test01() {
    list<int>l;
    //添加数据 
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    l.push_back(4);
    print(l);
     list<int>l2;
     l2=l; 
     print(l2);
     //assign
     list<int>l3;
     l3.assign(l.begin(),l.end());
     print(l3);
     list<int>l4;
     l4.assign(18,12);
     print(l4);
}
void test02()
{
    list<int>l;
    //添加数据 
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    l.push_back(4);
    list<int>l2;
     l2.assign(18,12);
     cout<<"交换前"<<endl;
     print(l);
     print(l2);
     cout<<"交换后"<<endl;
     l.swap(l2);
     print(l);
     print(l2);   
}
int main() {
    test01();
    test02();
    return 0;
}

5、排序与反转

#include<iostream>
#include<list>
using namespace std;
//list
bool mycompare(int v1,int v2)
{
    return v1>v2;
 } 
void print(list<int>&l) {
    for(list<int>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<*it<<" ";
    }
    cout<<endl;
}
void test01() {
    list<int>l;
    //添加数据 
    l.push_back(1);
    l.push_back(45);
    l.push_back(34);
    l.push_back(67);
    print(l);
    //反转 
    l.reverse();
    print(l);
    //排序
    //  所有不支持随机访问的容器,都不能使用标准算法
    //不支持随机访问的容器,内部会提供对应一些算法  
    l.sort();
    print(l); 
    l.sort(mycompare);
    print(l);     
}
int main() {
    test01();
    return 0;
}

6、插入和删除

#include<iostream>
#include<list>
using namespace std;
//list
void print(list<int>&l) {
    for(list<int>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<*it<<" ";
    }
    cout<<endl;
}
void test01() {
    list<int>l;
    //添加数据 尾加法 
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    l.push_back(4); 
    print(l);
    //2、头插
    l.push_front(100);
    l.push_front(200);
    l.push_front(300);
    print(l); 
    //3.尾删
    l.pop_back() ;
    print(l);
    //4、头删
    l.pop_front() ;
    print(l);
    //5、插入
    l.insert(l.begin(),1000);
    print(l);  
    //6、移动插入
    list<int>::iterator it=l.begin() ; 
    l.insert(++it,1000);
    print(l);  
    //7、删除
     list<int>::iterator iit=l.begin() ; 
     l.erase(iit);//l.erase(++it)
     print(l); 
     //8、移除
     l.push_back(10000);
     l.push_back(10000);
     l.push_back(10000);
     l.push_back(10000);
     print(l); 
     l.remove(10000);//删除所有与目标相匹配的元素 
     print(l);  
     //9、清空
     l.clear() ;
     print(l); 
}
int main() {
    test01();
    return 0;
}

7、数据存取

#include<iostream>
#include<list>
using namespace std;
//list
void print(list<int>&l) {
    for(list<int>::iterator it=l.begin(); it!=l.end(); it++) {
        cout<<*it<<" ";
    }
    cout<<endl;
}
void test01() {
    list<int>l;
    //添加数据
    l.push_back(1);
    l.push_back(2);
    l.push_back(3);
    l.push_back(4);
    print(l);
    cout<<"list中第一个元素为"<<l.front() <<endl;//list迭代器不支持随机访问,即it++成立 ,it=it+2不成立 
    cout<<"list中倒数第一个元素为"<<l.back() <<endl;//不可用l[]和l.at()访问,原因是l本质上是一个链表 
}
int main() {
    test01();
    return 0;
}

8、总结

 

标签:begin,list,back,c++,print,第三十七,push,打卡,include
From: https://www.cnblogs.com/zzqq1314/p/17432967.html

相关文章

  • 第33天打卡
    问题: 源代码:#include<stdio.h>intmain(){longinta,b,c;scanf("%ld/%ld",&a,&b);while(1){if(b%a)c=b/a+1;else{c=b/a;a=1;}if(a==1){printf("1/%ld\n",c);break;}elseprintf("1/%ld+",c);a=a*c-b;b=......
  • c++打卡练习(39)
    验证2000以内哥德巴赫猜想2000以内,大于4的所有偶数都可以由两个素数a,b相加得到,求出a最小的那个的结果流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intjudge(inta){ intj,k=0; for(j=2;j<a;j++){ if(a%j==0){ k++; break; } } if(k==0){ ......
  • 每日打卡
    比较分数大小问题描述:比较两个分数的大小问题分析:先设一个新的函数以便将分母分子转化成乘的状态,再直接比较乘积的结果,大的话直接输出即可代码:#include<stdio.h>#include<math.h>intll(inta,intb);intmain(){           inti,j,k,l,m,n;       ......
  • 5.25打卡
    一、问题描述:在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线二、设计思路:此问题关键在于余弦曲线在0~360度的范围内,一行要显示两个点。考虑到cos(x)的对称性,将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形是左右对称的。若将图形的总宽度定义为62列,计算出x行0~180度时y点的......
  • 第三十天打卡
    一、问题描述求出100以内的勾股数。二、设计思路定义a,b两数,a以1开始循环,b以a+1开始,避免出现a=3,b=4;a=4,b=3的情况,在对于c开始从0循环,设置条件c*c=a*a+b*b出现满足就输出a,b,c三数的值。三、程序流程图四、代码实现 ......
  • 5月25日打卡
    运行下面程序,观察输出结果#include<iostream>usingnamespacestd;intx=5,y=7;voidmyFunction(){inty=10;cout<<"xfrommyFunction:"<<x<<"\n";cout<<"yfrommyFunction:"<......
  • 打卡22
    #include<iostream>usingnamespacestd;classHorse{public:Horse(){cout<<"Horse申请了空间..."<<endl;}virtualvoidFly(){cout<<"Justahorse."<<endl;}virtual~Hors......
  • 历届试题 合根植物 c++
    问题描述w星球的一个种植园,被分成m*n个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这......
  • 每日打卡1066
    图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。输入格式:输入在第一行给出一幅图像的分辨率,即两个正整数 M 和 N(0<M,N≤500),另外是待过滤的灰度值区间端点 ......
  • C++黑马程序员——P213-214. queue容器
    P213.queue容器——基本概念P214.queue容器——常用接口P213.queue容器基本概念 P214.queue常用接口示例1classPerson2{3public:4Person(stringname,intage){5this->m_Name=name;6this->m_Age=age;7......