C++大学教程(第九版)7.19 将7.10节vector对象的例子转换成array对象

文章目录

  • 题目
  • 代码
  • 运行截图

题目

(将7.10节vector 对象的例子转换成array 对象)将图7.26中 vector 对象的例子转换成使用array
对象。请消除任何 vector 对象仅有的特性。

分析:

vector对象独有的特性:
1.vector对象长度可变
2.长度不同的vector对象可以直接赋值,以及比较(!=) (==)可以直接使用
3.函数形参无需包括vector对象的长度

转换成array对象需要修改的地方:
1.array对象大小不可变,所以不同长度的array对象需要不同的输入输出函数
2.长度不同的array对象不可以直接赋值;长度相同可以直接赋值;
长度不同的array对象比较时首先比较array对象长度,
若array对象长度不同,则两个array对象一定不同;
若array对象长度相同,才可以比较array对象是否相同(比较方法: 遍历,逐个比较元素大小)
3.不同的输入输出函数面对不同的array对象的长度,自动调用相应大小的函数。
例如:定义了四个函数(两个输入,两个输出)

代码

#include <iostream>
#include <iomanip>
#include <array>
#include <stdexcept>using namespace std;const int arraySize1 = 7;
const int arraySize2 = 10;void outputVector(const array<int, arraySize1> &);
void outputVector(const array<int, arraySize2> &);
void inputVector(array<int, arraySize1> &);
void inputVector(array<int, arraySize2> &);int main()
{array<int, arraySize1> integers1 = {};array<int, arraySize2> integers2 = {};cout << "Size of array integers1 is " << integers1.size()<< "\narray after initialization:" << endl;outputVector(integers1);cout << "Size of array integers2 is " << integers2.size()<< "\narray after initialization:" << endl;outputVector(integers2);cout << "\nEnter 17 integers:" << endl;inputVector(integers1);inputVector(integers2);cout << "\nAfter input,the arrays contain:\n"<< "integers1:" << endl;outputVector(integers1);cout << "integers2:" << endl;outputVector(integers2);cout << "\nEvaluating:integers1 != integers2" << endl;// 比较integers1和integers2是否相同if (integers1.size() != integers2.size()) // 如果两个array对象大小不同,则一定不同{cout << "integers1 and integers2 are not equal" << endl;}else{bool isEqual = true;for (size_t i = 0; i < integers1.size(); i++){if (integers1[i] != integers2[i]){isEqual = false;break;}}if (isEqual){cout << "integers1 and integers2 are equal." << std::endl;}else{cout << "integers1 and integers2 are not equal." << std::endl;}}array<int, arraySize1> integers3 = integers1; // integers3进行初始化,用integers1赋值cout << "\nSize of array integers3 is " << integers3.size()<< "\narray after initialization:" << endl;outputVector(integers3);cout << "\nAssigning integers2 to integers1:" << endl;for (size_t i = 0; i < arraySize1; ++i){ // 将integers2的值赋给integers1integers1[i] = integers2[i];}cout << "integers1:" << endl;outputVector(integers1);cout << "integers2:" << endl;outputVector(integers2);cout << "\nEvaluating:integers1 == integers2" << endl;if (integers1.size() != integers2.size()) // 如果两个array对象大小不同,则一定不同{cout << "integers1 and integers2 are not equal" << endl;}else{bool isEqual = true;for (size_t i = 0; i < integers1.size(); i++){if (integers1[i] != integers2[i]){isEqual = false;break;}}if (isEqual){cout << "integers1 and integers2 are equal." << std::endl;}else{cout << "integers1 and integers2 are not equal." << std::endl;}}cout << "\nintegers1[5] is " << integers1[5] << endl;cout << "\n\nAssigning 1000 to integers1[5]" << endl;integers1[5] = 1000;cout << "integers1:" << endl;outputVector(integers1);try{cout << "\nAttempt to display integers1.at(15)" << endl;cout << integers1.at(15) << endl;}catch (out_of_range &ex){cerr << "An exception occurred: " << ex.what() << endl;}cout << "\nCurrent integers3 size is: " << integers3.size() << endl;// integers3.push_back(1000);//array对象无法添加新元素,所以此处代码直接注释掉// cout << "New integers3 size is:" << integers3.size() << endl;outputVector(integers3);return 0;
}void outputVector(const array<int, arraySize1> &items)
{ // integers1和integers3输出for (int item : items){cout << item << " ";}cout << endl;
}void outputVector(const array<int, arraySize2> &items)
{ // integers2输出for (int item : items){cout << item << " ";}cout << endl;
}void inputVector(array<int, arraySize1> &items)
{ // integers1和integers3输入for (int &item : items)cin >> item;
}void inputVector(array<int, arraySize2> &items)
{ // integers2输入for (int &item : items)cin >> item;
}

运行截图

在这里插入图片描述
在这里插入图片描述

如有问题,欢迎评论一起交流,正在努力学习中~~

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

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

相关文章

查看php-fpm占用内存情况

1、查看每个php-fpm占用的内存大小 ps -ylC php-fpm --sort:rss 2 查看单个php-fpm进程消耗内存的明细 pmap $(pgrep php-fpm) | less pmap pmap命令用于显示一个或多个进程的内存状态 pmap [ -x | -d ] [ -q ] pids 参数&#xff1a; -x extended Show the extended f…

蓝桥小白赛4 乘飞机 抽屉原理 枚举

&#x1f468;‍&#x1f3eb; 乘飞机 &#x1f437; 抽屉原理 import java.util.Scanner;public class Main {static int N 100010;static int[] a new int[N];public static void main(String[] args){Scanner sc new Scanner(System.in);int n sc.nextInt();int q s…

【Godot4自学手册】第七节背景搭建

各位同学&#xff0c;今天是第七节&#xff0c;在本节我会学习如何使用TileMap来完成背景搭建。 一、添加TileMap结点 先做个介绍&#xff0c;TileMap是基于 2D 图块的地图节点。Tilemap&#xff08;图块地图&#xff09;使用 TileSet&#xff0c;其中包含了图块的列表&#…

dvwa靶场文件上传high

dvwa upload high 第一次尝试&#xff08;查看是否是前端验证&#xff09;第二次尝试我的上传思路最后发现是图片码上传修改配置文件尝试蚁&#x1f5e1;连接菜刀连接 第一次尝试&#xff08;查看是否是前端验证&#xff09; 因为我是初学者&#xff0c;所以无法从代码审计角度…

「QT」QString类的详细说明

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「

Python实现自定义函数的5种常见形式分析

Python自定义函数是以def开头&#xff0c;空一格之后是这个自定义函数的名称&#xff0c;名称后面是一对括号&#xff0c;括号里放置形参列表&#xff0c;结束括号后面一定要有冒号“&#xff1a;”&#xff0c;函数的执行体程序代码也要有适当的缩排。Python自定义函数的通用语…

idea结合git回到某个提交点

概述&#xff1a;在IntelliJ IDEA中&#xff0c;你可以使用Git工具来回到某个提交点。 第一步&#xff1a;打开idea&#xff0c;打开git的管理面 可以看到&#xff0c;由于我的大改动&#xff0c;导致现在出问题了&#xff0c;所以我准备回退到某一版本。 点击左下角的git 点…

软考15-上午题-编译程序基本原理

一、编译过程【回顾】 中间代码生成、代码优化&#xff0c;可省略。 二、正规式 词法分析的工具。 ab*&#xff1a;这个*针对的是b&#xff0c;即b可以出现0次或多次。 2-1、真题 真题1&#xff1a; 真题2&#xff1a; 真题3&#xff1a; 真题4&#xff1a; 真题5&#xff1a…

Python网络爬虫实战——实验7:Python使用apscheduler定时采集任务实战

【实验内容】 本实验主要介绍在Django框架中使用APScheduler第三方库实现对数据的定时采集。 【实验目的】 1、掌握APScheduler库的使用&#xff1b; 2、学习在Django中实现多个定时任务调度&#xff1b; 【实验步骤】 步骤1 Apscheduler简介与特点 步骤2 Apscheduler基本…

Linux进程间通信(IPC)机制之一:管道(Pipes)详解

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;Nonsense—Sabrina Carpenter 0:50━━━━━━️&#x1f49f;──────── 2:43 &#x1f504; ◀️ ⏸ ▶️ …

Scrapy IP()类 编程指南(基础)

Scrapy IP()类 编程指南&#xff08;基础&#xff09; IP简介 工欲善其事&#xff0c;必先利其器&#xff0c;在聊Scapy IP类时&#xff0c;我们先要了解IP是什么。 IP指的是Internet Protocol&#xff08;互联网协议&#xff09;的数据包。Internet Protocol是互联网上用于在…

SpringBoot系列之JPA实现按年月日查询

SpringBoot系列之JPA实现按年月日查询 通过例子的方式介绍Springboot集成Spring Data JPA的方法&#xff0c;进行实验&#xff0c;要先创建一个Initializer工程&#xff0c;如图&#xff1a; 选择&#xff0c;需要的jdk版本&#xff0c;maven项目 选择需要的maven配置&#x…

pytest参数化

一、pytest.mark.parametrize介绍 pytest.mark.parametrize(argnames, argvalues, indirectFalse, idsNone)参数说明&#xff1a; argnames: 一个或多个参数名&#xff0c;用逗号分隔的字符串&#xff0c;如"arg1,arg2,arg3"&#xff0c;参数名与用例入参数一致。 a…

Android读写文件,适配Q以上

Android Q升级了文件系统&#xff0c;访问文件不仅仅是说动态权限了&#xff0c;有各种限制。权限什么的就不赘述了&#xff0c;下面介绍一下在10以上的系统中访问文件。 首先是打开文件管理器 /*** 打开文件管理器 存储卡和外接U盘都可以访问*/public void openFileManager()…

什么是JSON

什么是JSON JSON&#xff1a;JavaScript Object Notation 【JavaScript 对象表示法】 JSON 是存储和交换文本信息的语法。类似 XML。 JSON采用完全独立于任何程序语言的文本格式&#xff0c;使JSON成为理想的数据交换语言S 为什么需要JSON 提到JSON&#xff0c;我们就应该和…

代码块(Java)

代码块是类的成分之一&#xff0c;分为静态代码块和实例代码块 1.静态代码块&#xff1a;static{} 类加载时会自动执行一次&#xff0c;可以完成类的初始化&#xff0c;比如初始化赋值 2.实例代码块&#xff1a;{} 每次创建对象时&#xff0c;执行实例代码块&#xff0c;会…

探索圆的面积计算器:神秘数学背后的无限魅力

导语&#xff1a;自古以来&#xff0c;圆形在人类文明中扮演着重要角色。从建筑、工程设计到日常生活&#xff0c;圆的面积都是一个不可或缺的元素。本文将带您深入了解圆的面积&#xff0c;从起源、应用场景到计算方法&#xff0c;让您领略数学的无穷魅力。 一、圆的面积是什…

java金额数字转中文

java金额数字转中文 运行结果&#xff1a; 会进行金额的四舍五入。 工具类源代码&#xff1a; /*** 金额数字转为中文*/ public class NumberToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER {"零", "壹", "贰",…

CMake构建Qt工程

在https://blog.csdn.net/fengbingchun/category_12172633.html 上有直接通过vs2022建的Console、Widgets、Quick三个工程&#xff0c;这里增加通过CMake构建。 build.sh内容如下&#xff1a; #! /bin/bashif [ $# ! 1 ]; thenecho "Error: requires one parameter: Rele…

基于springboot网上书城交易平台源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括网上书城管理系统的网络应用&#xff0c;在国外网上书城管理系统已经是很普遍的方式&#xff0c;不过国内的书城管理系统可能还处于起步阶段。网上书城管理系统具有网上书城信…