当前位置: 首页 > news >正文

c++(8.29)auto关键字,lambda表达式,数据类型转换,标准模板库,list,文件操作+Xmind

作业:

封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个)

再把该容器中的对象,保存到文件中。

再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。

#include <iostream>
#include<vector>
#include<fstream>
using namespace std;class Stu
{friend istream & operator>>(istream &cin,Stu &R);friend ostream & operator<<(ostream &cout,const Stu &R);
private:string name;int age;
public:Stu(){};Stu(string name,int age):name(name),age(age){};
};ostream & operator<<(ostream &cout,const Stu &R)
{cout << R.name << " ";cout << R.age << endl;return cout;
}istream & operator>>(istream &cin,Stu &R)
{cin >> R.name;cin >> R.age;return cin;
}
int main()
{Stu s1("张三",18);Stu s2("李四",20);Stu s3("王五",19);vector<Stu> stu;stu.push_back(s1);stu.push_back(s2);stu.push_back(s3);ofstream ofs;ofs.open("D:/2.txt",ios::out);vector<Stu>::iterator iter;for(iter = stu.begin();iter!=stu.end();iter++){ofs << *iter ;}ofs.close();vector<Stu>stu1;Stu s;ifstream ifs;ifs.open("D:/2.txt",ios::in);while(ifs>>s){stu1.push_back(s);}for(iter=stu1.begin();iter!=stu1.end();iter++){cout << *iter ;}ifs.close();return 0;
}

 1.模板类

#include <iostream>using namespace std;template < class T,class N>
class A
{
private:T t;N n;
public:A(){};//无参构造A(T t,N n):t(t),n(n){}//有参构造void show(){cout << t << endl << n << endl;}
};
int main()
{A<string,int> a("张三",18);a.show();return 0;
}

2.异常(异常情况为取钱时取的钱小于0或者大于余额)

#include <iostream>using namespace std;class BankAccount
{
private:double balance;
public:BankAccount(){};BankAccount(double balance):balance(balance){};void withdraw(double money){if(money<0){throw(invalid_argument("取款金额不能为负数"));}else if(money>balance){throw(runtime_error("余额不足"));}else{balance -= money;cout << "余额为:" << balance << endl;}}
};int main()
{BankAccount account1(1000);try {account1.withdraw(-100);} catch (invalid_argument &e){cout << "Erro:" << e.what() << endl;} catch (runtime_error &e){cout << "Erro:" << e.what() << endl;}try {account1.withdraw(1500);} catch (invalid_argument &e){cout << "Erro:" << e.what() << endl;} catch (runtime_error &e){cout << "Erro:" << e.what() << endl;}try {account1.withdraw(500);} catch (invalid_argument &e){cout << "Erro:" << e.what() << endl;} catch (runtime_error &e){cout << "Erro:" << e.what() << endl;}return 0;
}

3.lambda表达式和auto的使用

#include <iostream>using namespace std;int main()
{int a=100;double b=3.14;char c='a';auto fun=[a,b,c](){};//捕获外界a,b,c变量的值,fun函数中的a,b,c不是外界的a,b,c,地址不同,//想要修改fun中的a,b,c的值,必须在()后加上mutableauto fun1=[=](){};//捕获外界所有的变量值auto fun2=[&a,&b](){};//捕获外界a,b变量的地址,fun函数中的a,b是外界的a,b,地址相同,//想要修改fun2中的值,可以直接改变auto fun3=[&](){};//捕获外界所有的变量的地址auto fun4=[=,&a,&b](){};//捕获外界所有的值,但是变量a和变量b是引用捕获,//fun函数中的a,b是外界的a,b,地址相同,可以直接修改,不用加上mutableauto fun5=[&,a,b](){};//捕获外界所有变量的地址,但变量a,b捕获的是值,修改需要加mutablereturn 0;
}

4.容器

#include <iostream>
#include<vector>
using namespace std;void printVector(vector<int> &v)
{vector <int>::iterator ite;//创建一个vector<int>类型的迭代器itefor(ite=v.begin();ite!=v.end();ite++){cout << *ite << ' ';}cout << endl;
}
int main()
{//容器vector<int>v;//无参构造容器vv.push_back(10);//尾插v.push_back(20);v.push_back(30);v.push_back(40);//算法printVector(v);vector<int>v2(v.begin(),v.end());//拷贝v中begin到end区间中的值printVector(v2);vector<int>v3(6,10);//拷贝构造,将6个10拷贝给v3printVector(v3);vector<int>v4=v2;//拷贝构造,将v2中的值拷贝给v4printVector(v4);vector<int>v5(v3);//拷贝构造,将v3中的值拷贝给v5printVector(v5);vector<int>v6;v6=v5;//拷贝赋值,将v5的值拷贝一份给v6v6.assign(v5.begin(),v5.end());//将v5begin到end区间的值拷贝一份赋值给v6v6.assign(8,99);//将8个99拷贝一份赋值给v6if(v6.empty())//判断v6是否为空{cout << "v6容器为空" << endl;}else{cout << "v6容器的容量为:" << v6.capacity() << endl;cout << "v6容器的大小(容器中的元素个数)为:" << v6.size() <<endl;printVector(v6);v6.resize(15);//大小重新设置为15,数据不够补充0printVector(v6);}return 0;
}

5.list链表

#include <iostream>
#include <list>
using namespace std;void printList(list<char> &v)
{list <char>::iterator ite;//创建一个list<char>类型的迭代器itefor(ite=v.begin();ite!=v.end();ite++){cout << *ite << ' ';}cout << endl;
}
int main()
{list <char> lst;//定义一个链表,里面存放char类型元素lst.push_back('h');//存放一个字符alst.push_back('e');lst.push_back('l');lst.push_back('l');lst.push_back('o');printList(lst);//输出lst中的所有元素lst.push_front('a');//在lsit表头部插入字符'a'lst.push_back('!');//在尾部插入元素'!'printList(lst);//输出lst中的所有元素lst.pop_front();//删除list表头部元素lst.pop_back();//删除list表尾部元素printList(lst);//输出lst中的所有元素list <char> lst2(lst.begin(),lst.end());//拷贝构造函数,将lst内从begin到end的元素拷贝到链表lst2中printList(lst2);//输出lst2中的所有元素list <char> lst3(3,'6');//拷贝构造函数,将3个字符6存入链表lst3中printList(lst3);//输出lst3中的所有元素list <char> lst4(lst3);//拷贝构造函数,将lst3中的元素拷贝到lst4中printList(lst4);//输出lst4中的所有元素list <char> lst5;lst5.assign(lst.begin(),lst.end());//拷贝赋值函数,将lst中begin到end区间的值拷贝一份赋值到lst5中printList(lst5);//输出lst5中的所有元素,结果和lst结果一致lst5.assign(7,'h');//将5个h赋值到lst5中printList(lst5);//输出lst5中的所有元素,结构为7个hlst5.swap(lst);//将lst中的元素和本身中的元素交换printList(lst5);//输出lst5中的所有元素,因为交换,变成了lst中的元素printList(lst);//输出lst中的所有元素,因为交换,变为之前lst5中的元素了cout << "------------------------------" << endl;list <char> lstt(5,'a');//创建一个lstt链表,里面含有5个'a'list <char> ::iterator ite;lstt.insert(lstt.begin(),'h');//在begin位置插入一个字符'h'printList(lstt);//输出lstt链表中的所有元素lstt.remove('a');//删除lstt链表中所有的字符'a'printList(lstt);//输出lstt链表中的所有元素lstt.clear();//删除lstt链表中的所有元素printList(lstt);//输出lstt链表中的所有元素return 0;
}

​​​​​​​

相关文章:

c++(8.29)auto关键字,lambda表达式,数据类型转换,标准模板库,list,文件操作+Xmind

作业&#xff1a; 封装一个学生的类&#xff0c;定义一个学生这样类的vector容器, 里面存放学生对象&#xff08;至少3个&#xff09; 再把该容器中的对象&#xff0c;保存到文件中。 再把这些学生从文件中读取出来&#xff0c;放入另一个容器中并且遍历输出该容器里的学生。…...

Docker学习笔记(持续更新)

Docker学习目录 1.基础1.1 Docker简介1.1.1 Why Docker&#xff1f;1.1.2 Docker理念1.1.3 容器与虚拟机1.1.4 Docker能做什么&#xff1f; 1.2 Docker的基本组成1.2.1 Docker的三要素1.2.2 Docker平台架构 1.基础 1.1 Docker简介 1.1.1 Why Docker&#xff1f; 在个人笔记本…...

无涯教程-Android - 应用组件

应用程序组件是Android应用程序的基本组成部分&#xff0c;这些组件需要在应用程序清单文件 AndroidManifest.xml 注册&#xff0c;该文件描述了应用程序的每个组件以及它们如何交互。 Android应用程序可以使用以下四个主要组件- Sr.NoComponents & 描述1 Activities 它们…...

树与图c++

1.树 前言 本文主要介绍的数据结构之树型结构的相关知识&#xff0c;树型数据结构是面试官面试的时候非常喜欢考的一种数据结构&#xff0c;树形结构的遍历也是大厂笔试非常喜欢设置的考点&#xff0c;这些内容都会在本篇文章中进行详细的介绍&#xff0c;并且还会介绍一些常…...

中小企业常用的 IT 项目管理软件有哪些?

越热门&#xff0c;越贵的IT项目管理软件越好用吗&#xff1f;对于预算有限的中小型企业来说&#xff0c;如何选择一款适合自己的项目管理工具着实是个头疼的问题。 首先适用于中小型企业使用的 IT 项目管理软件需要具备哪些特点呢&#xff1f; 1、简单易用&#xff1a;中小企…...

汇编原理计算方法:物理地址=段地址*16+偏移地址

文章目录 计算方法计算错误分析 计算方法 根据进制的不同选择不同的计算方法 注意&#xff1a;物理地址、段地址和偏移地址的进制统一&#xff0c;要么都是二进制&#xff0c;要么都是十六进制&#xff0c;一般而言多是十六进制 若是二进制表达&#xff0c;则将段地址左移四…...

jdk-8u371-linux-x64.tar.gz jdk-8u371-windows-x64.exe 【jdk-8u371】 全平台下载

jdk-8u371 全平台下载 jdk-8u371-windows-x64.exejdk-8u371-linux-x64.rpmjdk-8u371-linux-x64.tar.gzjdk-8u371-macosx-x64.dmgjdk-8u371-linux-aarch64.tar.gz 下载地址 迅雷云盘 链接&#xff1a;https://pan.xunlei.com/s/VNdLL3FtCnh45nIBHulh_MDjA1?pwdw4s6 百度…...

数据结构体--5.0图

目录 一、定义 二、图的顶点与边之间的关系 三、图的顶点与边之间的关系 四、连通图 五、连通图的生成树定义 一、定义 图&#xff08;Graph&#xff09;是由顶点的又穷非空集合合顶点之间边的集合组成&#xff0c;通常表示为&#xff1a;G&#xff08;V&#xff0c;E&…...

深入剖析 Golang 程序启动原理 - 从 ELF 入口点到GMP初始化到执行 main!

大家好&#xff0c;我是飞哥&#xff01; 在过去的开发工作中&#xff0c;大家都是通过创建进程或者线程来工作的。Linux进程是如何创建出来的&#xff1f; 、聊聊Linux中线程和进程的联系与区别&#xff01; 和你的新进程是如何被内核调度执行到的&#xff1f; 这几篇文章就是…...

C语言——多文件编程

多文件编程 把函数声明放在头文件xxx.h中&#xff0c;在主函数中包含相应头文件在头文件对应的xxx.c中实现xxx.h声明的函数 防止头文件重复包含 当一个项目比较大时&#xff0c;往往都是分文件&#xff0c;这时候有可能不小心把同一个头文件 include 多次&#xff0c;或者头…...

Git学习part1

02.尚硅谷_Git&GitHub_为什么要使用版本控制_哔哩哔哩_bilibili 1.Git必要性 记录代码开发的历史状态 &#xff0c;允许很多人同时修改文件&#xff08;分布式&#xff09;且不会丢失记录 2.版本控制工具应该具备的功能 1&#xff09;协同修改 多人并行不悖的修改服务器端…...

2309C++均为某个类型

#include <常用> 构 A{空 f(){打印("啊");} }; 元<类 T>构 是点啊:假型{}; 元<>构 是点啊<A>:真型{}; 元<类 T>概念 是呀是点啊<T>::值;元<是呀...T>空 f(T&...t){(t.f(),...); }//均为元<类...T>要求 均为值&l…...

2023年打脸面试官之TCP--瞬间就懂

1.TCP 三次握手之为什么要三次呢&#xff1f;事不过三&#xff1f; 过程如下图&#xff1a; 先来解释下上述的各个标志的含义 序列号seq&#xff1a;占4个字节&#xff0c;用来标记数据段的顺序&#xff0c;TCP把连接中发送的所有数据字节都编上一个序号&#xff0c;第一个字节…...

设计模式-单例模式Singleton

单例模式 单例模式 (Singleton) (重点)1) 为什么要使用单例2) 如何实现一个单例2.a) 饿汉式2.b) 懒汉式2.c) 双重检查锁2.d) 静态内部类2.e) 枚举类2.f) 反射入侵2.g) 序列化与反序列化安全 3) 单例存在的问题3.a) 无法支持面向对象编程 单例模式 (Singleton) (重点) 一个类只…...

PPPoE连接无法建立的排查和修复

嗨&#xff0c;亲爱的读者朋友们&#xff01;你是否曾经遇到过PPPoE连接无法建立的问题&#xff1f;今天我将为你详细解析排查和修复这个问题的步骤。 检查物理连接 首先&#xff0c;我们需要确保物理连接没有问题。请按照以下步骤进行检查&#xff1a; - 检查网线是否插好&…...

QT 发布软件基本操作

一、配置环境变量 找到Qt安装时的bin目录的路径&#xff1a;D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin&#xff0c;将目录拷贝至下述环境变量中。 打开计算机的高级系统设置 选中环境变量-->系统变量-->Path 点击编辑-->新建-->粘贴 二、生成发布软件的可执行程序 …...

CTFhub-SSRF-内网访问

CTFHub 环境实例 | 提示信息 http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url_ 根据提示&#xff0c;在url 后门添加 127.0.0.1/flag.php http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url127.0.0.1/flag.php ctfhub{a6bb51530c8f6be0…...

Cenos7安装小火车程序动画

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 一&#xff1a;替换…...

Node 执行命令时传参 process.argv

process 对象是一个全局变量&#xff0c;提供当前 Node.js 进程的有关信息&#xff0c;以及控制当前 Node.js 进程。 因为是全局变量&#xff0c;所以无需使用 require()。 process.argv 属性返回一个数组&#xff0c;这个数组包含了启动Node.js进程时的命令行参数&#xff0c…...

【Vue】快速上手--Vue 3.0

什么是 Vue&#xff1f;​ Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目&#xff0c;核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容&#xff0c;附学习方向和应试技巧&#xff1a; 一、施工组织与进度管理 核心目标&#xff1a; 规…...