C++Day 7 作业

news2024/11/18 19:33:54

1、lambda

#include <iostream>

using namespace std;

int main()
{
    int a =100;
    int b =90;
    int temp;

    auto  fun = [&]()mutable->int {temp =a;a=b;b=temp;};
    fun();
    cout<<a<<endl;
    return 0;
}

2、vector

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

int main()
{
    //调用无参构造,实例化一个vector类对象
    vector<int> v1;
    //对vector容器进行插入操作
    //判空
//    cout<<v1.empty()<<endl;
    //插入
    v1.assign(3,89);
//    cout<<"v1.size:"<<v1.size()<<endl;
//    cout<<"v1.capacity:"<<v1.capacity()<<endl;
    v1.assign(1,23);//将一个元素插入已满的vector中实现的时覆盖操作
    cout<<"v1.size:"<<v1.size()<<endl;
    cout<<"v1.capacity:"<<v1.capacity()<<endl;
    v1.assign(3,89);//插入3个89
    //通过front函数返回首元素的引用并修改
    v1.front() = 90;
//  cout<<v1.front()<<endl;
    //通过back函数返回首元素的引用并修改
    v1.back() = 24;
//  cout<<v1.back()<<endl;
    //通过at函数访问vector中相应下标的元素,也可以修改
    for(int i = 0 ;i<3;i++)
    {
        cout<<v1.at(i)<<endl;
    }
    //使用beign函数,返回vector中第一个位置的迭代器
//    cout<<*v1.begin()<<endl;
    //使用insert函数,插入元素
//    cout<<*v1.insert(v1.begin(),14)<<endl;
    cout<<"v1.size:"<<v1.size()<<endl;
    cout<<"v1.capacity:"<<v1.capacity()<<endl;
//    for(int i = 0 ;i<4;i++)
//    {
//          cout<<v1.at(i)<<endl;
//    }
    //定义一个迭代器
    vector<int>::iterator start = v1.begin()+1;
    v1.insert(v1.begin(),start,v1.end());//在指定位置前插入start——end区间中的元素
    v1.insert(v1.begin()+2,15);//在第二个元素后插入元素
    vector<int>::iterator n = v1.begin();
    for(;n!=v1.end();n++)
    {
        cout<<*n<<endl;
    }
    //使用max_size()返回所能容纳元素的最大数量
    cout<<"max_size:"<<v1.max_size()<<endl;
    //使用pop_back函数删除当前vector最末的一个元素
    v1.pop_back();
    for(n=v1.begin();n!=v1.end();n++)
    {
        cout<<*n<<endl;
    }
    //使用push_back函数在末尾插入指定值的元素
    v1.push_back(24);
    cout<<endl;
    for(n=v1.begin();n!=v1.end();n++)
    {
        cout<<*n<<endl;
    }
    //使用erase函数删除指定位置的元素,也可删除区间内的所有元素
    v1.erase(v1.begin()+2);//删除第三个元素
    cout<<endl;
    for(n=v1.begin();n!=v1.end();n++)
    {
        cout<<*n<<endl;
    }
    return 0;
}

3、智能指针

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

class Demo
{
public:
    int a;
    Demo():a(9){cout<<"无参"<<endl;}
    ~Demo(){cout<<"析构"<<endl;}

};
class Test
{
public:
    int b;
    Test():b(10){cout<<"无参"<<endl;}
    ~Test(){cout<<"析构"<<endl;}
};
int main()
{
//    //①使用堆空间直接初始化unique_ptr
//    unique_ptr<Demo> p1(new Demo);
//    cout<<"p1 = "<<p1.get()<<endl;
//    cout<<endl;

//    //②使用原始指针初始化uniquq_ptr
//    Demo *p = new Demo;
//    cout<<"p = "<<p<<endl;
//    unique_ptr<Demo> p2(p);
//    cout<<"p2 = "<<p2.get()<<endl;
//    cout<<endl;

//    swap(p1,p2);//swap交换指针
//    cout<<"p1 = "<<p1.get()<<endl;
//    cout<<"p2 = "<<p2.get()<<endl;
//    cout<<endl;

//    //③使用函数初始化unique_ptr
//    unique_ptr<Demo> p3 =make_unique<Demo>();
//    p3 = nullptr;
//    cout<<endl;

//    //④想让p4独占p2的空间
//    unique_ptr<Demo> p4;
//    p4 = move(p2);
//    cout<<"p2 = "<<p2.get()<<endl;
//    cout<<"p4 = "<<p4.get()<<endl;
//    cout<<endl;

//    //释放p4对空间使用权
//    Demo *test = p4.release();
//    cout<<"p4 = "<<p4.get()<<endl;
//    cout<<"test = "<<test<<endl;
//    cout<<endl;

//    unique_ptr<Demo> p5(move(p4));//move返回值可作为初始化


    //①使用堆空间直接初始化unique_ptr
    shared_ptr<Demo> p1(new Demo);
    cout<<endl;

    //②使用原始指针初始化uniquq_ptr
    Demo *p = new Demo;
    shared_ptr<Demo> p2(p);
    cout<<endl;


    //③使用函数初始化unique_ptr
    shared_ptr<Demo> p3 =make_shared<Demo>();
    cout<<endl;

    //④调用拷贝构造函数
    shared_ptr<Demo> p4(p3);
    cout<<endl;

    //⑤调用拷贝赋值函数
    shared_ptr<Demo> p5;
    p5 = p4;
    cout<<endl;

    /***********引入计数功能***********/
    cout<<"引入计数功能:"<<endl;
    cout<<p2.use_count()<<endl;
    p2 = nullptr;//释放p2堆空间的所有权,空间的引用计数-1
    cout<<p2.use_count()<<endl;

    return 0;
}

4、思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 第十七章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

Python 与 TensorFlow2 生成式 AI(三)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第七章&#xff1a;使用 GAN 进行风格转移 神经网络在涉及分析和语言技能的各种任务中正在取得进步。创造力是人类一直占有优势的领域&…

探索潜力:中心化交易所平台币的对比分析

核心观点 平台币在过去一年里表现差异显著&#xff1a; 在过去的一年里&#xff0c;只有少数几个平台币如BMX、BGB和MX的涨幅超过了100%。相比之下&#xff0c;由于市值较高&#xff0c;BNB和OKB的涨幅相对较低。 回购和销毁机制在平台币价值中起决定性作用&#xff1a; 像M…

力扣刷题 63.不同路径 II

题干 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

【JS篇之】异常

前言&#xff1a;在代码编写过程中&#xff0c;最常遇到的就是程序异常。其实异常并非坏事&#xff0c;它可以让开发人员及时发现、定位到错误&#xff0c;提醒我们做正确的事情&#xff0c;甚至在某些时候&#xff0c;我们还会手动抛出异常。 1.异常的分类 在JS中&#xff0…

PotatoPie 4.0 实验教程(32) —— FPGA实现摄像头图像浮雕效果

什么是浮雕效果&#xff1f; 浮雕效果是一种图像处理技术&#xff0c;用于将图像转换为看起来像浮雕一样的效果&#xff0c;给人一种凸起或凹陷的立体感觉&#xff0c;下面第二张图就是图像处理实现浮雕效果。 不过这个图是用Adobe公司的PS人工P图实现的&#xff0c;效果比较…

http的basic 认证方式

写在前面 本文看下http的basic auth认证方式。 1&#xff1a;什么是basic auth认证 basic auth是一种http协议规范中的一种认证方式&#xff0c;即一种证明你就是你的方式。更进一步的它是一种规范&#xff0c;这种规范是这样子&#xff0c;如果是服务端使用了basic auth认证…

UnityWebGL使用sherpa-ncnn实时语音识别

k2-fsa/sherpa-ncnn&#xff1a;在没有互联网连接的情况下使用带有 ncnn 的下一代 Kaldi 进行实时语音识别。支持iOS、Android、Raspberry Pi、VisionFive2、LicheePi4A等。 (github.com) 如果是PC端可以直接使用ssssssilver大佬的 https://github.com/ssssssilver/sherpa-ncn…

Mybatis进阶(动态SQL)

文章目录 1.动态SQL1.基本介绍1.为什么需要动态SQL2.基本说明3.动态SQL常用标签 2.环境搭建1.新建子模块2.删除不必要的两个文件夹3.创建基本结构4.父模块的pom.xml5.jdbc.properties6.mybatis-config.xml7.MyBatisUtils.java8.MonsterMapper.java9.MonsterMapper.xml10.测试Mo…

经典机器学习法---感知模型机

优质博文&#xff1a;IT-BLOG-CN 1、模型形式 感知机模型主要用于解决二分类问题&#xff0c;即响应变量Y是个二分类变量&#xff08;如性别&#xff09;。其基本思想是拟找出一个超平面S&#xff0c;将样本空间中的训练集分为两个部分&#xff0c;使得位于超平面S合一侧的点具…

匠心精神与创新力量:构筑网络安全的新防线

一、匠心精神在网络安全中的重要性 匠心精神代表着对工作的专注和对质量的极致追求。在网络安全领域&#xff0c;这意味着对每一个安全漏洞的深入挖掘&#xff0c;对每一项安全技术的精心打磨。亿林网络李璐昆的提名&#xff0c;正是对其在网络安全领域匠心精神的认可。 二、…

手把手教数据结构与算法:优先级队列(银行排队问题)

队列 基本概念 队列的定义 队列&#xff08;Queue&#xff09;&#xff1a;队列是一种常见的数据结构&#xff0c;遵循先进先出&#xff08;First-In-First-Out, FIFO&#xff09;的原则。在队列中&#xff0c;元素按照进入队列的顺序排列。队列是一个线性的数据结构&#x…

【PPT设计】颜色对比、渐变填充、简化框线、放大镜效果、渐变形状配图、线条的使用

目录 图表颜色对比、渐变填充、简化框线放大镜效果渐变形状配图 线条的使用区分标题与说明信息区分标题与正文,区分不同含义的内容**聚焦****引导****注解****装饰** 图表 颜色对比、渐变填充、简化框线 小米汽车正式亮相&#xff01;你们都在讨论价格&#xff0c;我全程只关…

【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)

&#x1f308;个人主页&#xff1a;是店小二呀 &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;C笔记专栏&#xff1a; C笔记 &#x1f308;喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 一、简单介绍Sizeof和Strlen1.1 Sizeof1.2 Strlen函数1.3 Sie…

几个容器网络问题实战解析

容器云平台和容器网络紧密结合&#xff0c;共同构建了容器化应用程序的网络基础设施&#xff0c;实现了容器之间的通信、隔离和安全性。文中容器云平台采用的容器网络组件是calico&#xff0c;这个是业界普遍采用的一种方案&#xff0c;性能及安全性在同类产品中都是比较好的。…

【UnityRPG游戏制作】Unity_RPG项目_玩家逻辑相关

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

Android Studio 调试:快速入门指南

作为一名Android应用开发人员&#xff0c;调试是你不可或缺的技能之一。通过调试&#xff0c;你可以定位和解决各种问题&#xff0c;包括崩溃、性能问题、UI错误等。在本文中&#xff0c;我们将分享一些实用的Android调试技巧&#xff0c;帮助你提高应用开发效率。 Android St…

Delta lake with Java--将数据保存到Minio

今天看了之前发的文章&#xff0c;居然有1条评论&#xff0c;看到我写的东西还是有点用。 今天要解决的问题是如何将 Delta产生的数据保存到Minio里面。 1、安装Minio&#xff0c;去官网下载最新版本的Minio&#xff0c;进入下载目录&#xff0c;运行如下命令&#xff0c;曾经…

动态规划——记忆化递归

1.情景导入 你应该知道斐波那契数列吧&#xff01;就是前两项之和等于这一项。如果你学过递归&#xff0c;你肯定会写这道题&#xff1a;输入一个N代表你要求的项数&#xff0c;然后输出斐波那契的第N项。这道题看似简单&#xff0c;实则也挺简单实则特别困难&#xff08;对于…

C++学习第十五课:类型转换运算符的深度解析

C学习第十五课&#xff1a;类型转换运算符的深度解析 类型转换是编程中常见的需求&#xff0c;C提供了多种类型转换方式&#xff0c;包括静态类型转换和动态类型转换。此外&#xff0c;还可以通过类型转换运算符自定义转换行为。本课将深入探讨C中的类型转换机制&#xff0c;包…