C++Day 7 作业

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.mfbz.cn/a/587023.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python安卓自动化pyaibote实践------学习通自动刷课

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文是一个完成一个自动播放课程&#xff0c;避免人为频繁点击脚本的构思与源码。 加油&#xff01;为实现全部电脑自动化办公而奋斗&#xff01; 为实现摆烂躺平的人生而奋斗&#xff01;&#xff01;&#xff…

python项目入门新手攻略

最近工作需要接手了代码量比较大的python开发的项目&#xff0c;平时写python不多&#xff0c;记录一下如何熟悉项目。 分析调用流程-pycallgraph 因为代码量比较大&#xff0c;所以希望通过工具生成代码调用流程&#xff0c;因此用到了pycallgraph。 pycallgraph&#xff0…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

56.基于SSM实现的在线教育网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用Java的SSM框架作为开发技术&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SSM的在线教育网站的设计与实现管理工作系统化、规范…

Scikit-Learn回归树

Scikit-Learn回归树 1、决策树1.1、什么是决策树1.2、决策树学习的步骤1.3、决策树算法 1、决策树 决策树&#xff08;DTs&#xff09;是一种用于回归和分类的有监督学习方法。通常&#xff0c;决策树用于分类问题&#xff1b;当决策树用于回归问题时&#xff0c;称为回归树。回…

Midjourney之绘画背景的选择

hello 小伙伴们&#xff0c;我是你们的老朋友——树下&#xff0c;今天分享Midjourney提示词中绘画背景的选择&#xff0c;话不多说&#xff0c;直接开始~ 对于背景的选择&#xff0c;Midjourney中主要体现在年代和所处的环境对绘画产生不同的影响 科技的发展&#xff0c;我们…

matlab学习006-使用matlab绘出系统的冲激响应和阶跃响应波形并求其冲激响应的数值解

目录 题目 1&#xff0c;绘出系统的冲激响应和阶跃响应波形 1&#xff09;基础 2&#xff09;效果 3&#xff09;代码 2&#xff0c;求出t0.5s,1s,1.5s,2s时系统冲激响应的数值解。 1&#xff09;基础 2&#xff09;效果 ​☀ 3&#xff09;代码 题目 已知描述某连续系…

【Python】Anaconda 使用笔记

文章目录 一、创建环境1.1 在任意磁盘中创建环境1.2 添加环境路径envs_dirs 二、安装和使用Python环境三、删除已有的Python环境 前言   笔者使用Python的目的主要是为了学习神经网络等深度学习算法。但是在学习之初配置环境的时候发现之前的环境配置一团乱麻&#xff0c;不仅…

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…

第七篇:专家级指南:Python异常处理的艺术与策略

专家级指南&#xff1a;Python异常处理的艺术与策略 1 引言 在编程的世界中&#xff0c;异常处理是一门必修的艺术。它不仅涉及到程序的错误处理&#xff0c;更广泛地影响着软件的稳定性、健壮性和用户体验。本篇文章将深入探讨Python中的异常处理&#xff0c;展示如何通过精心…

Linux:服务器间同步文件的脚本(实用)

一、功能描述 比如有三台服务器&#xff0c;hadoop102、hadoop103、hadoop104&#xff0c;且都有atguigu账号 循环复制文件到所有节点的相同目录下&#xff0c;且脚本可以在任何路径下使用 二、脚本实现 1、查看环境变量 echo $PATH2、进入/home/atguigu/bin目录 在该目录下…

三. Django项目之电商购物商城 -- 校验用户名 , 数据入库

Django项目之电商购物商城 – 校验用户名 , 数据入库 需要开发文档和前端资料的可私聊 一. 路由匹配获得用户名 在注册时 , 用户输入用户名 , 通过ajax请求发送到服务器 , 在路由中设置对应url , 响应视图 , 将用户输入的用户名传入视图 , 与数据库进行校验检查用户名是否重…

信息技术内涵及意义

一、信息技术及其演进趋势 &#xff08;一&#xff09;信息技术概况概念 信息技术&#xff08;Information Technology&#xff0c;IT&#xff09;指“应用在信息加工和处理中的科学、技术与工程的训练方法与管理技巧&#xff1b;上述方法和技巧的应用&#xff1b;计算机及其…

linux高性能服务器--Ngix内存池简单实现

文章目录 内存模型&#xff1a;流程图内存对齐code 内存模型&#xff1a; 流程图 内存对齐 对齐计算 要分配一个以指定大小对齐的内存&#xff0c;可以使用如下公式&#xff1a; 假设要分配大小为n&#xff0c;对齐方式为x&#xff0c;那么 size(n(x-1)) & (~(x-1))。 举个…

【大模型系列】大模型的上下文长度解释与拓展

文章目录 1 什么是大模型的上下文长度&#xff1f;2 拓展大模型上下文长度的方式参考资料 1 什么是大模型的上下文长度&#xff1f; 大模型的上下文长度&#xff08;Context Length&#xff09;是指在自然语言处理&#xff08;NLP&#xff09;的大型语言模型&#xff08;Large…

自动的异地组网工具?

越来越多的企业和个人对远程访问和异地组网需求日益增加。为了满足这一需求&#xff0c;各种技术和服务也不断涌现。其中一项备受关注的技术就是自动的异地组网。本文将介绍这一技术的优势和特点。 【天联】组网的优势 天联组网技术以其卓越的性能和稳定性备受用户称赞。它的优…

数据结构:实验七:数据查找

一、 实验目的 &#xff08;1&#xff09;领会各种查找算法的过程和算法设计。 &#xff08;2&#xff09;掌握查找算法解决实际问题。 二、 实验要求 &#xff08;1&#xff09;编写一个程序exp8-1.cpp, 按提示输入10个任意的整形数据&#xff08;无序&#xff09;&…

数字旅游引领未来智慧之旅:科技应用深度重塑旅游生态,智慧服务全面升级打造极致高品质旅游体验

随着信息技术的飞速发展&#xff0c;数字旅游作为旅游业与科技融合的新兴业态&#xff0c;正以其独特的魅力和优势&#xff0c;引领着旅游业迈向智慧之旅的新时代。数字旅游不仅通过科技应用重塑了旅游生态&#xff0c;更通过智慧服务为游客带来了高品质的旅游体验。本文将深入…

从键入网址到网页显示,期间发生了什么?

从键入网址到网页显示&#xff0c;期间发生了什么&#xff1f; 孤单小弟【HTTP】真实地址查询【DNS】指南帮手【协议栈】可靠传输【TCP】远程定位【IP】两点传输【MAC】出口【网卡】送别者【交换机】出境大门【路由器】互相扒皮【服务器与客户端】相关问答 不少小伙伴在面试过程…

浅谈Agent AI智能体的未来

Agent AI智能体的未来非常广阔和潜力巨大。随着技术的发展和应用场景的不断拓展&#xff0c;我们可以期待以下几个方面的发展&#xff1a; 更加智能化&#xff1a;Agent AI智能体将会变得越来越智能&#xff0c;具备更强大的学习、推理和决策能力。它们可以通过大数据和机器学习…