结构体的vector resize()与初始化

2023-05-16

转自:https://www.cnblogs.com/kongse-qi/p/6798873.html

序: 
我们在使用vector的时候可以自定义里面的数据类型。例如这样:

struct Edge{
    int from;
    int to;
    int weight;
};
vector<Edge> edge;

使用vector的使用我们有时会用到resizereserve函数进行内存的分配。在之前的测试中我们发现先使用resize再用下标访问读取数据的效率要远远高于push_back()(测试结果见下),所以resize函数在初始化的时候会被使用。 
关于vector push_back()与其他方式读取数据的效率对比 
但是当我们真的调用resize函数的时候,编译器会报错:

edge.resize(0);
---
[Error] no matching function for call to 'Edge::Edge()'
[Note] candidates are:

难道是调用resize的时候格式出了问题吗? 
但是却发现下面的:

vector<int> arc[maxn];
arc[i].resize(0);

没有任何问题。 
那么自定义结构体与int这类数据类型到底哪里不同

后来我们发现加上它就不会报错了:

struct Edge{
    int from;
    int to;
    int weight;
    Edge(){} /* 重点在这里 */
    Edge(int f, int t, int w):
        from(f), to(t), weight(w){}/* 这个不是重点 */
};

原来当执行resize的时候,如果我们将它扩大,编译器会自动将剩下的部分初始化。int的初始化为0,但是我们自定义的结构体没有初始化函数。所以它无法执行。 
类似的,当我们直接声明一个结构体数组的时候:

Edge edge[maxn];

发生报错的原因也在于此,由于vector在声明的时候不会执行初始化所以没有报错。但是声明一个数组,编译器会将整个数组初始化,这就需要你手写一个初始化的函数。(可以是空,也可以在里面写你要的特殊初始化,但是必须要有)而且这个初始化的函数参数是空的,函数名就是结构体的名字(你初始化的时候没有参数),跟普通的函数一个意思,只不过是写在了结构体的内部。


那么再看下面不是重点的那两行代码:

Edge(int f, int t, int w):
        from(f), to(t), weight(w){}

这个就是有参数的初始化了。当你读入多个数据构造结构体的时候,这样做会让代码很简洁。 
不用的话是这样的:

n = Get_Int(), m = Get_Int(), we = Get_Int();//读入优化
edge[i].from = n;
edge[i].to = m;
...

有了它代码会是这样的:

n = Get_Int ...; /* 输入同上 */
edge[i] = Edge(n, m, we);

明显简洁了很多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构体的vector resize()与初始化 的相关文章

  • spring RestTemplate

    原文地址 xff1a https blog csdn net u012702547 article details 77917939 https github com lenve SimpleSpringCloud tree master
  • win10 无法打开wlan 解决方案

    win10 xff0c 遇到了无法开启移动热点的情况 xff0c 开关呈灰色状态 xff0c 而且提示 xff1a 无法设置移动热点 请打开WLAN 解决办法 xff1a 1 设备管理器 网络适配器 确保无线网卡在启动状态 xff0c 能够
  • Jetson TK1学习(一) 刷机

    前言 最早接触TK1是在2015年7月份的DJI ROBOMASTER夏令营里 xff0c 当时DJI推出了用于无人机平台的skymind嵌入式计算机 xff0c 也就是后来的 妙算 34 当时我并没有关注这款计算机的架构 只是当时同组的算
  • Jetson TK1学习(二)安装无线网卡

    上一篇文章讲了Jetson TK1的刷机方法 由于TK1自身没有无线网卡 xff0c 单位里面也没有有线的路由器 xff0c 所以需要在TK1上安装个无线网卡 TK1上有PCIE的接口 xff0c 目前对Intel 7260AC这款无线网卡
  • 教你创建Custom Device自定义设备

    1 问题描述 在半物理仿真测试中需要调用仿真机上的硬件设备实现仿真设备间数据通信 模拟和数字信号的采集或驱动等功能 在Veristand实时测试配置环境中可以通过创建Custom Device自定义设备实现PXI机箱 xff08 仿真机 x
  • 汉字编码(【Unicode】 【UTF-8】 【Unicode与UTF-8之间的转换】 【汉字 Unicode 编码范围】【中文标点Unicode码】【GBK编码】【批量获取汉字UNICODE码】)

    参考博客 xff1a Unicode与UTF 8互转 C语言实现 xff1a http blog csdn net tge7618291 article details 7599902 汉字 Unicode 编码范围 xff1a http
  • Visual Stdio实现云+端跨平台开发优势,Windows Azure实现移动跨平台

    Visual Stdio实现云 43 端跨平台开发优势 xff08 csdn会议总结 xff09 现代企业的架构平台 xff0c 目前移动开发的平台有哪些 xff1a 如何实现跨平台 xff1a Windows Azure 云端服务在 上海
  • C++类库

    如果你有一定的C基础可能学起来比较容易些 但是学习C 43 43 的过程中又要尽量避免去使用一些C中的思想 平时还要多看一些高手写的代码 遇到问题多多思考 怎样才能把问题抽象化 以使自己头脑中有类的概念 最后别忘了经常上机自己调调程序 这是
  • Mac上安装node和npm

    通过安装包来安装 第 1 步 xff1a 下载适用于 macOS 的 NPM 包 去Node JS官网下载Mac操作系统的npm包 您可以单击此处打开下载页面并为您的系统选择合适的文件 第 2 步 xff1a 按照指南运行包管理器 打开下载
  • Java Maven项目问题整理

    文章目录 src main java文件夹src test java文件夹src main java和src test java文件夹区别读取maven项目中src test resources里的配置文件maven 项目导入本地jar包
  • Lombok使用总结

    文章目录 介绍Lombok原理常用注解 64 Data 64 Getter 64 Setter 64 ToString 64 EqualsAndHashCode 64 NoArgsConstructor 64 AllArgsConstruc
  • 解决:PDFBox报的java.io.IOException: Missing root object specification in trailer

    文章目录 问题描述原因分析解决方案 问题描述 使用pdfbox类库操作pdf文件时 xff0c 遇到下面的报错信息 xff1a java io IOException Missing root object specification in
  • KEIL每次都要编译全部文件并且每个文件编译三次

    SYD8801是一款低功耗高性能蓝牙低功耗SOC xff0c 集成了高性能2 4GHz射频收发机 32位ARM Cortex M0处理器 128kB Flash存储器 以及丰富的数字接口 SYD8801片上集成了Balun无需阻抗匹配网络
  • Mac上Golang语言环境搭建

    文章目录 官网其他参考安装golang源码安装安装包安装使用homebrew安装 配置GOROOTGOPATHGOPROXYGOPRIVATEGONOSUMDB 安装测试 官网 目前无法在家里的直接访问golang org网站 xff1a
  • [已解决] Mac上docker安装prometheus报错:Are you trying to mount a directory onto a file (or vice-versa)?

    文章目录 项目场景问题描述原因分析解决方案 项目场景 Mac上通过docker安装prometheus 问题描述 docker run时 xff0c 会出现下面的报错 xff0c 导致容器启动失败 xff1a docker Error re
  • Mac上安装Node Exporter

    文章目录 安装Node Exporter方法一 xff1a 手动安装方法二 xff1a docker安装 运行测试 node exporter 可以采集机器 xff08 物理机 虚拟机 云主机等 xff09 的监控指标数据 xff0c 能够
  • Docker安装Grafana

    文章目录 Grafana介绍拉取镜像准备相关挂载目录及文件启动容器访问测试添加 Prometheus 数据源常见问题 看板配置 Grafana介绍 上篇博客介绍了prometheus的安装 xff1a Docker部署Prometheus
  • Springboot应用接入Prometheus监控

    文章目录 接入介绍操作步骤修改应用的依赖及配置步骤1 xff1a 修改 pom 依赖步骤2 xff1a 修改配置 本地验证prometheus配置 接入介绍 在使用 Spring Boot 作为开发框架时 xff0c 需要监控应用的状态 x
  • Spring Boot自带监控组件—Actuator介绍

    文章目录 Actuator介绍启用与暴露的区别Spring Boot集成Actuator应用监控框架Actuator监控端点启用端点端点的默认暴露规则案例 自定义端点 Actuator介绍 Actuator是Spring Boot提供的应用
  • Git Commit提交规范总结

    文章目录 前言git commit 提交规范提交消息头 commit message header 提交消息具体内容 commit message body 提交消息尾述 commit message footer Revert 表情 Em

随机推荐

  • 常用kubectl命令总结

    文章目录 配置kubeconfig帮助信息命令查看具体某一个命令的帮助信息列出全局的选项参数 xff08 适用所有的命令 xff09 显示合并的 kubeconfig 配置或一个指定的 kubeconfig 文件 基本命令罗列所支持的完整资
  • 解决:org.apache.catalina.connector.ClientAbortException: java.io.IOException: 断开的管道

    文章目录 项目场景问题描述原因分析解决方案 项目场景 jdk11 Spring Boot 2 x 项目 xff0c Tomcat容器 Nginx 问题描述 系统日志中 xff0c 时不时会出现下面的异常信息 xff1a org apache
  • 解决:No converter for [xxxx] with preset Content-Type ‘text/plain;version=0.0.4;charset=utf-8‘

    文章目录 项目背景问题描述问题分析解决方案方案一 xff1a 修改Controller定义方案二 xff1a 修改Controller返回值方案三 xff1a 全局处理 项目背景 Spring Boot 2 X 问题描述 错误信息如下 xf
  • SYD8821 串口模块使用说明【串口0中断要屏蔽底层调用】

    SYD8821是具有全球领先低功耗 RX 2 4mA 64 94 5dBm灵敏度 xff0c TX 4 3mA 64 0dBm输出功率 的蓝牙低功耗SOC芯片 xff0c 在极低电流下实现了优异的射频性能 xff0c 搭配176kB SRA
  • MySQL的information_schema库下的常用sql

    文章目录 information schema TABLES查看该数据库实例下所有库大小 MB为单位 查看该实例下各个库大小 MB为单位 查看表大小 MB为单位 熟练使用 information schema库里的表 显示在库里的表 xff
  • shell脚本批量转文件格式:dos2unix

    文章目录 可以使用shell脚本实现 xff1a span class token shebang important bin sh span span class token assign left variable dir span s
  • 解决:com.atomikos.icatch.SysException: Error in init: Log already in use? tmlog in ./

    文章目录 项目场景问题描述原因分析详细分析 解决方案 项目场景 Spring Boot 2 x xff0c 集成 atomikos 问题描述 今天在同一个环境启动两个项目时报错 xff0c 因为两个项目同时涉及到分布式事物和切换数据源相关
  • Nginx日志介绍

    文章目录 access log日志流量统计 access log 日志文件一般存放在 var log nginx 下 xff0c 可以使用 tail f命令查看access日志 span class token function tail
  • JVM (Micrometer)-4701面板参数介绍

    文章目录 Quick Facts 概览 堆和非堆内存有以下几个概念 I O Overview xff08 服务黄金指标 xff09 JVM Memory xff08 JVM内存 xff09 JVM Misc xff08 JVM负载 xff0
  • curl文件传输命令

    CURL curl transfer a URL curl 是一个利用URL语法在命令行下工作的文件传输工具 支持文件上传和下载 格式 curl options URLs URL xff1a 通过大括号指定多个url 示例 xff1a cu
  • RS-485信号解析

    这次来看看RS 485信号 使用绿联的USB转RS485模块 线用的颜色不对 xff0c 类型也不对 xff0c 实际使用中请用带屏蔽层的双绞线 示波器CH1是R xff08 B xff09 示波器CH2是R 43 xff08 A xff0
  • T t与T t = T()的区别

    主要的区别就是默认构造函数对内置类型的初始化上 如果没有T中没有定义构造函数 xff0c 则对于 T t xff0c 并不会对 t 中内置类型设置初始值 xff0c 是一个随机值 但对于 T t 61 T xff0c 对 t 中内置类型会设
  • Effective STL:杂记(一)

    1 避免使用vector lt bool gt vector lt bool gt 实际上并不能算是一个STL容器 xff0c 实际上也并不存储bool 因为一个对象要成为STL容器 xff0c 就必须满足C 43 43 标准的第23 1节
  • 限制长度双向链表的插入操作

    面试遇到的问题 xff0c 一开始面试官是问我有什么方案可以实现排行榜 xff0c 当时给出了两个方案 后面面试官又在我的其中一种方案上让我手写代码实现排序双线链表的插入 xff0c 根据score值插入 xff0c 并且链表长度限制在10
  • SYD8821 IIC模块使用说明

    SYD8821是具有全球领先低功耗 RX 2 4mA 64 94 5dBm灵敏度 xff0c TX 4 3mA 64 0dBm输出功率 的蓝牙低功耗SOC芯片 xff0c 在极低电流下实现了优异的射频性能 xff0c 搭配176kB SRA
  • Python下载文件时出现乱码的解决方法之一:Content-Encoding: gzip

    之前写过一个简单的爬虫程序 xff0c 这次想试着再写一个下载固定文件的爬虫程序 写完之后发现下载的文件 xff0c 有些是可以正常打开的 xff0c 而有些是提示了编码错误 xff0c 用wireshark抓包 xff0c 过滤出http
  • Python爬虫判断url链接的是下载文件还是html文件

    最近在写一个网络爬虫的代码 xff0c 提供命令行来下载文件或者是打印根域名下指定节点及深度的子节点 用的是urllib2库 xff0c 算是比较简单 xff0c 但是功能并没有很强大 说重点吧 xff0c 在实际爬网页的过程中 xff0c
  • recvmsg和sendmsg函数

    在unp第14章讲了这两个函数 xff0c 但是只是讲了两个数据结构及参数而已 xff0c 所以自己想根据介绍来重构udp回射的客户端程序 但是sendmsg和recvmsg都遇到了问题 xff0c 并且纠结了很久 xff0c 所以在此记录
  • STL中map的[]运算导致程序挂掉的问题

    在项目的开发中 xff0c 使用 设置map变量时 xff0c 出现了Segment Fault的问题 xff0c 使用GDB bt命令得到调用栈 xff08 中间部分被我去掉了 xff09 如下 xff1a 0 0x00000000008
  • 结构体的vector resize()与初始化

    转自 xff1a https www cnblogs com kongse qi p 6798873 html 序 xff1a 我们在使用vector的时候可以自定义里面的数据类型 例如这样 xff1a struct Edge int fr