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

C++ 改善程序的具体做法 学习笔记

1、尽量用const enum inline替换#define

因为#define是做预处理操作,编译器从未看见该常量,编译器刚开始编译,它就被预处理器移走了,而#define的本质就是做替换,它可能从来未进入记号表

解决方法是用常量替换宏

语言常量会被编译器看到,会进入记号表内

#define不注重域的范围,而const可以,#define不能定义类常量,也不能提供封装性,比如private等

用#define定义“函数”问题会非常大

int a = 5, b = 0;

#define CALL_WITH_MAX(a, b) f((a) > (b) ? (a) : (b))

如果调用CALL_WITH_MAX(++a, b); //a会累计加两次,(++a) > (b) ? (++a) : (b);

因为++a > b,所以使用++a的值(三目运算符)

如果调用CALL_WITH_MAX(++a, b + 10);就会累计加一次,因为a < b了,所以取值b,之加了一次

在迭代器中,若迭代器不做值修改那么可以用const_iterator,以此提高性能

例如:

const std::vector<int>::iterator iter = vec.begin();//iter的作用类似于T* const

*iter = 10;//正确

++iter;//错误

std::vector<int>::const_iterator citer = vec.begin();//iter的作用类似于const T*

*citer = 10;//错误

++citer;//正确

const加在返回值身上:

const Rational operator* (const Rational& lhs, const Rational& rhs);

如果不加,那么我可以写成:Rational a, b, c;

(a * b) = c;//而a*b返回的是一个右值

 

 

相关文章:

C++ 改善程序的具体做法 学习笔记

1、尽量用const enum inline替换#define 因为#define是做预处理操作&#xff0c;编译器从未看见该常量&#xff0c;编译器刚开始编译&#xff0c;它就被预处理器移走了&#xff0c;而#define的本质就是做替换&#xff0c;它可能从来未进入记号表 解决方法是用常量替换宏 语言…...

Unity 之 GameObject.Find()在场景中查找指定名称的游戏对象

文章目录 GameObject.Find 是 Unity 中的一个函数&#xff0c;用于在场景中查找指定名称的游戏对象。这个函数的主要作用是根据游戏对象的名称来查找并返回一个引用&#xff0c;使您能够在代码中操作该对象。以下是有关 GameObject.Find 的详细介绍&#xff1a; 函数签名&…...

flink on yarn with kerberos 边缘提交

flink on yarn 带kerberos 远程提交 实现 flink kerberos 配置 先使用ugi进行一次认证正常提交 import com.google.common.io.Files; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.flink.client.cli.CliFrontend; import o…...

NodeJS的简介以及下载和安装

本章节会带大家下载并安装NodeJs 以及简单的入门&#xff0c;配有超详细的图片&#xff0c;一步步带大家进行下载与安装 NodeJs简介关于前端与后端Node是什么&#xff1f;为什么要学习NodeNodeJS的优点&#xff1a; NodeJS的下载与安装NodeJS的下载&#xff1a; NodeJS的快速入…...

量化面试-概率题

文章目录 一、题目1.糖果罐&#xff08;绿皮书79页&#xff09;2 折木棍&#xff08;绿皮书89页&#xff09;3 第一张ACE&#xff08;绿皮书95页&#xff09;4 n个均匀分布之和&#xff08;绿皮书95页&#xff09; 二、答案1. 糖果罐2 折木棍3 第一张ACE4 n个均匀分布之和 一、…...

【spark】java类在spark中的传递,scala object在spark中的传递

记录一个比较典型的问题&#xff0c;先讲一下背景&#xff0c;有这么一个用java写的类 public class JavaClass0 implements Serializable {private static String name;public static JavaClass0 getName(String str) {if (name null) {namestr;}return name;}... }然后在sp…...

php 文字生成图片保存到本地

你可以使用PHP的GD库来生成图片并保存到本地。首先&#xff0c;你需要确保你的PHP环境已经安装了GD库。然后&#xff0c;你可以使用GD库的函数来创建一个画布&#xff0c;并在上面绘制文字。最后&#xff0c;使用imagepng或imagejpeg函数将画布保存为PNG或JPEG格式的图片文件。…...

面试手撕—二叉搜索树及其后序遍历

一、引言 在面试地平线的时候&#xff0c;聊到了二叉搜索树&#xff0c;让手撕二叉搜索树&#xff0c;以下是要求 1、用类模板实现二叉搜索树 2、写一个函数&#xff0c;实现给一个vector数组&#xff0c;转换成二叉搜索树 3、写出二叉搜索树的后序遍历 二、代码实现 #inc…...

Java数据结构面试题以及答案

本专栏记录Java后端开发相关的面试题&#xff0c;欢迎大家阅读专栏的其他文章。 目录 1.B树和B树的区别&#xff1f;B树和B树的优点分别是&#xff1f; 2.排序算法的种类和复杂度 3.HashMap和Hashtable的原理、区别、应用场景 4.ConcurrentHashMap的原理、应用场景 5.Arra…...

Java——它要求用户输入一个整数(实际上是一个字符串),然后计算该整数的平方值,并将结果输出。

这是一个Java程序&#xff0c;它要求用户输入一个整数&#xff08;实际上是一个字符串&#xff09;&#xff0c;然后计算该整数的平方值&#xff0c;并将结果输出。程序的基本流程如下&#xff1a; 首先&#xff0c;声明并初始化变量data和result&#xff0c;它们的初始值都为…...

【科研论文配图绘制】task6直方图绘制

【科研论文配图绘制】task6直方图绘制 task6 主要掌握直方图的绘制技巧&#xff0c;了解直方图含义&#xff0c;清楚统计指标的添加方式 1.直方图 直方图是一种用于表示数据分布和离散情况的统计图形&#xff0c;它的外观和柱形图相近&#xff0c;但它所 表达的含义和柱形图…...

Leetcode刷题:395. 至少有 K 个重复字符的最长子串、823. 带因子的二叉树

Leetcode刷题:395. 至少有 K 个重复字符的最长子串、823. 带因子的二叉树 1. 395. 至少有 K 个重复字符的最长子串算法思路参考代码和运行结果 2. 823. 带因子的二叉树算法思路参考代码和运行结果 1. 395. 至少有 K 个重复字符的最长子串 题目难度&#xff1a;中等 标签&#…...

java八股文面试[多线程]——Synchronized的底层实现原理

笔试&#xff1a;画出Synchronized 线程状态流转实现原理图 synchronized关键字解决的是多个线程之间访问资源的同步性&#xff0c;synchronized 翻译为中文的意思是同步&#xff0c;也称之为”同步锁“。 synchronized的作用是保证在同一时刻&#xff0c; 被修饰的代码块或方…...

C#,《小白学程序》第三课:类、类数组与排序

类class把数值与功能巧妙的进行了结合&#xff0c;是编程技术的主要进步。 下面的程序你可以确立 分数 与 姓名 之间关系&#xff0c;并排序。 1 文本格式 /// <summary> /// 同学信息类 /// </summary> public class Classmate { /// <summary> /…...

史上最全AP、mAP详解与代码实现

文章目录 前言一、mAP原理1、mAP概念2、准确率3、精确率4、召回率5、AP: Average Precision 二、mAP0.5与mAP0.5:0.951、mAP0.52、mAP0.5:0.95 三、mAP代码实现1、真实标签json文件格式2、模型预测标签json文件格式3、mAP代码实现4、mAP结果显示 四、模型集成mAP代码1、模型mai…...

百数应用中心——生产制造管理解决方案解决行业难题

传统生产制造业面临着许多挑战&#xff0c;其中一些主要问题包括效率低下、交期压力大、需求预测不准确、生产模式复杂、异常响应慢、库存高和计划脱节等。这些问题不仅影响了生产效率和质量&#xff0c;也导致了不必要的成本和客户满意度下降。 生产制造管理应用对于企业的生产…...

《存储IO路径》专题:IO虚拟化初探

大家好&#xff0c;欢迎来到今天的科技小课堂。今天我们要聊聊的是一项非常有趣且实用的技术——I/O虚拟化&#xff08;Input/Output Virtualization&#xff0c;简称IOV&#xff09;。想象一下&#xff0c;如果把物理硬件资源比作一道丰盛的大餐&#xff0c;那么IOV就是那位神…...

Springboot2.0快速入门(第一章)

目录 一&#xff0c;SpringBoot简介1.1&#xff0c;回顾什么是Spring1.2&#xff0c;Spring是如何简化Java开发的1.3&#xff0c;什么是SpringBoot 二&#xff0c;Hello&#xff0c;World2.1&#xff0c;准备工作2.2&#xff0c;创建基础项目说明2.3&#xff0c;创建第一个Hell…...

Flink流批一体计算(17):PyFlink DataStream API之StreamExecutionEnvironment

目录 StreamExecutionEnvironment Watermark watermark策略简介 使用 Watermark 策略 内置水印生成器 处理空闲数据源 算子处理 Watermark 的方式 创建DataStream的方式 通过list对象创建 ​​​​​​使用DataStream connectors创建 使用Table & SQL connectors…...

javeee spring cglib动态代理

cglib动态代理 依赖 <dependency><groupId>cglib</groupId><artifactId>cglib-nodep</artifactId><version>3.2.4</version></dependency>代理类 package com.test.cglibProxy;import net.sf.cglib.proxy.Enhancer; import …...

全网最全的彩虹云商城系统源码以及各类发卡网源码,绝对精品

《资源下载地址在结尾》 全网最全的彩虹云商城系统源码及发卡源码技术解析 彩虹云商城系统源码架构分析 核心模块&#xff1a;用户管理、商品管理、订单系统、支付接口集成技术栈&#xff1a;PHPMySQL&#xff08;主流组合&#xff09;、Laravel框架或ThinkPHP框架的二次开发…...

Go语言ARP工具包:从协议原理到网络诊断实战

1. 项目概述&#xff1a;一个被低估的网络诊断利器 如果你在运维、网络安全或者仅仅是喜欢折腾家庭网络的圈子里混过一段时间&#xff0c;大概率听说过或者用过 arp 命令。但大多数人&#xff0c;包括很多从业者&#xff0c;对它的认知可能还停留在“查看IP和MAC地址对应关系…...

低功耗单板计算机在远程传感中的设计与优化

1. 低功耗单板计算机的远程传感革命在阿拉斯加的输油管道监控站里&#xff0c;一台体积仅相当于信用卡大小的计算机已经连续工作三年&#xff0c;仅靠两节锂电池和一块巴掌大的太阳能板维持运转。这个真实案例展示了低功耗单板计算机(SBC)在极端环境下的惊人潜力。不同于传统工…...

从编码到网络:GLM模型在图论分析中的实战指南

1. GLM模型与图论分析的完美结合 第一次接触GLM模型是在分析脑网络数据时&#xff0c;当时手头有一批健康人和患者的脑功能连接数据&#xff0c;需要找出两组间的差异。传统方法只能逐个节点比较&#xff0c;效率低下且容易漏掉整体网络特征。直到发现GLM模型可以完美融入图论分…...

基于React与OpenAI构建智能聊天应用:架构设计与工程实践

1. 项目概述&#xff1a;一个开箱即用的React聊天应用框架最近在做一个需要集成智能对话功能的小项目&#xff0c;不想从零开始造轮子&#xff0c;就在GitHub上翻找现成的解决方案。结果就发现了这个叫openai-react-chat的仓库。第一眼看到这个标题&#xff0c;我的直觉是&…...

Lynkr:基于Rust的命令行文件快速定位与编辑工具设计解析

1. 项目概述&#xff1a;Lynkr是什么&#xff0c;以及它为何值得关注如果你是一名开发者&#xff0c;或者对提升日常工作效率有追求&#xff0c;那么你一定对“编辑器”这个概念不陌生。从简单的记事本到功能强大的IDE&#xff0c;编辑器是我们与代码、文本、配置打交道的核心界…...

开源记忆增强系统mnemo-cortex:开发者的命令行知识管理利器

1. 项目概述&#xff1a;一个面向开发者的开源记忆增强系统如果你和我一样&#xff0c;每天被海量的代码片段、API文档、临时想法、会议纪要和待办事项淹没&#xff0c;那么“如何高效地记住并快速调用这些信息”就成了一个永恒的痛点。传统的笔记软件要么太重&#xff0c;要么…...

主权身份技术解析:从DID、可验证凭证到零知识证明的完整架构与实践

1. 项目概述与核心价值最近在数字身份领域折腾&#xff0c;发现一个叫“TamTunnel/sovereign-identity”的项目挺有意思。这个名字乍一看有点抽象&#xff0c;但拆开来看&#xff0c;“sovereign-identity”直译就是“主权身份”&#xff0c;而“TamTunnel”像是一个代号或通道…...

【Perplexity ACM论文查询终极指南】:20年科研老兵亲授3大隐藏技巧,90%研究者至今不知

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity ACM论文查询的底层逻辑与认知重构 Perplexity 并非 ACM 官方检索系统&#xff0c;而是一种基于语言模型的智能代理式查询工具&#xff0c;其与 ACM Digital Library 的交互本质是语义驱动的…...

嬴姓有多罕见?全国不到1000人的姓氏,即将成为一个啤酒品牌

嬴姓&#xff0c;中国最古老的姓氏之一。全国不到1000人姓嬴。这个罕见的姓氏&#xff0c;即将成为一个啤酒品牌的名字。你身边有姓“嬴”的人吗&#xff1f;大概率没有。因为嬴姓太罕见了。据统计&#xff0c;全国姓“嬴”的人不到1000人。主要分布在江苏、山东、河北等地。嬴…...