首页 > 编程语言 >一些 C++ 的卡常技巧

一些 C++ 的卡常技巧

时间:2024-07-12 13:19:02浏览次数:14  
标签:std ch 技巧 int 代码 long ++ C++ 卡常

是的,这篇文章的主要内容非常好懂,相信各位同学也十分感兴趣 毕竟哪位OIer不想自己的代码跑得飞快呢

那么我们就进入正题吧!

First

众所周知,一份代码里面必然会有很多循环打表的话当我没说,而循环自然是十分占时间的。

所以我们要做的就十分清楚了:加速循环!

1. 把 int 改成 register int

register int 表示使用cpu内部寄存器(寄存器为中央处理器内的组成部分,是有限存贮容量的高速存贮部件)的变量。

而平时的 int 是把变量放在内存中,存到寄存器中可以加快变量的读写速度。

2. 把 i++ 改成 ++i

i++ 是先计算再储存,而 ++i 是先储存再计算。

一般情况,两者的效率相比之下,自然是 ++i 更胜一筹。

Second

函数是很常用的一个东西,很大意义上,它可以看出我们做题的思路是否明晰。

如果你想要让你的代码的运行速度更快,可以试着在你的函数类型前面加上 inline

inline 可以把函数指定为内联函数,这样可以解决一些频繁调用的函数大量消耗栈空间(栈内存)的问题。

Third

俗话说得好,“十年OI一场空,不开 long long 见祖宗”。

但是long long 占用的二进制位是 int 的两倍,所以计算机处理 long long 类型的变量的时候花费的时间会更长。

Forth

有些题的输入和输出十分毒瘤,动不动就几十万几百万的数据能轻松把你的时间拉特别高。

所以,快读快写出现了,以下为快读快写代码,可直接食用。

char ch;
inline void read(int &x)
{
    while((ch=getchar())<48||ch>57);
    x=ch^48;
    while((ch=getchar())<58&&ch>47)  x=(x<<1)+(x<<3)+(ch^48);
}

Fifth

因为位运算是直接对二进制的位进行运算,而且计算机处理位运算和三目运算符要比正常计算快。

所以在写一些代码时,可以这样优化:

max(x,y)  ->  x>y?x:y
min(x,y)  ->  x<y?x:y
x%2  ->  x&1
x/2  ->  x>>1
x*2  ->  x<<1;

Sixth

因为 using namespace std 的功能仅仅是让你在调用标准函数库的时候不在前面加上 std::,所以为了让代码更快完全可以将他删掉。

但是因为每一次都要写 std:: 太麻烦,我在这么干的时候一般都会 define _ std::

标签:std,ch,技巧,int,代码,long,++,C++,卡常
From: https://www.cnblogs.com/liudagou/p/18298181

相关文章

  • <c++>斗破苍穹游戏(转载·博客园)喜欢的一键三连~
    #include<stdio.h>#include<ctime>#include<time.h>//suiji#include<windows.h>//SLEEP函数structPlayer//玩家结构体,并初始化player{charname[21];intattack;intdefense;inthealth;longintmax_health;intlevel;intexp;intrange_exp;......
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——安装篇(一)
    #在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——安装篇(一)前言关键字:机器学习人工智能AIchatGPT学习实现使用搭建深度python事件远程dockermysql安全技术部署技术自动化代码文章目录-------------......
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)
    #在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)前言文章目录前言-聚合和分析-执行聚合操作-1.使用JavaAPI执行聚合操作-2.使用CURL命令执行聚合操作-1.使用JavaAPI执行度量操作-2.使用CURL命令执行度量操作-使用缓存-调......
  • C++编程基础
     一:C++程序语言的基本组成。其中包括:1.一些基础数据类型:布尔值(Boolean)、字符(character)、整数(integer),   浮点数(foating  point)。2.算术运算符、关联运算符以及逻辑运算符,用以操作上述的基础数据型别。这些运算符不仅包括一般常见的加法运算符、等......
  • c/c++设计模式---访问者模式
    访问者(Visitor)模式:访问器模式,行为型模式。  //(1)一个具体范例的逐渐演化  //阿司匹林肠溶片:改善血液流通,预防血栓形成,血栓形成就产生阻塞,人就会直接面临危险;  //氟伐他汀钠缓释片:降血脂。因为血脂高意味着血流慢,营养无法运输到身体各部位,还很可能引发心脑血管疾病;......
  • Python实战Elasticsearch的核心技巧详解
    概要Elasticsearch是一个分布式的搜索引擎,可以用于全文搜索、结构化搜索、分析等多种场景。它基于Lucene构建,提供了强大的搜索功能和数据分析能力。本文将详细介绍如何使用Python实现与Elasticsearch的交互,包括安装、配置、基本操作和实际应用示例。安装和配置安装Elast......
  • 【C++】AVL树(旋转、平衡因子)
    ......
  • [C++]封装
    一、封装的定义封装是面向对象编程(OOP)的三大基本特性之一(封装、继承、多态)。它指的是将数据(属性)和操作这些数据的方法(函数)结合成一个独立的单元(类),并尽可能隐藏对象的内部细节,仅对外公开接口。这样做的目的是保护对象的数据,防止外部代码直接访问对象内部的数据结构,减少错误并简......
  • 【C++】通讯录管理系统+少量数据结构
    #include<iostream>#include<string>usingnamespacestd;#definemax1000structnewp{ stringname; intsex; intage; stringnumber; stringadd;};structbooks{ structnewpa[max]; intsize;};staticvoidshowMenu(){ cou......
  • 【C++ 】C++ 停车场收费系统(源码)【独一无二】
    ......