分享好友 最新动态首页 最新动态分类 切换频道
C++ ---- 二分查找一维数组,二维数组。
2024-12-26 20:03

看代码运行速度一下从48ms提升到24ms

解析
1. Lambda
首先先说一下这个语法

static const auto io_sync_off = {
… …
}();
这个乍一看很像是函数,但是前后又是[]又是()的,还没函数名没返回值的,感觉又不太像,所以就去请教了一下别人,得到答案是Lambda捕获。

Lambda表达式是C++11引入的特性,是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数。Lambda也可以称为匿名函数。

static const auto function() {
… …
}
static const auto io_sync_off = function();

2.std::ios::sync_with_stdio(false);
函数std :: ios_base :: sync_with_stdio的解释是

Sets whether the standard C++ streams are synchronized to the standard C streams after each input/output operation.
设置在每次输入/输出操作后标准C ++流是否与标准C流同步

随后又看到了一段关于std :: cin的解释

The global objects std::cin and std::wcin control input from a stream buffer of implementation-defined type (derived from std::streambuf), associated with the standard C input stream stdin.

These objects are guaranteed to be constructed before the first constructor of a static object is called and they are guaranteed to outlive the last destructor of a static object, so that it is always possible to read from std::cin in user code.

Unless sync_with_stdio(false) has been issued, it is safe to concurrently access these objects from multiple threads for both formatted and unformatted input.

Once std::cin is constructed, std::cin.tie() returns &std::cout, and likewise, std::wcin.tie() returns &std::wcout. This means that any formatted input operation on std::cin forces a call to std::cout.flush() if any characters are pending for output.

现在大概明白了一些,因为C++中的std :: cin和std :: cout为了兼容C,保证在代码中同时出现std :: cin和scanf或std :: cout和printf时输出不发生混乱,所以C++用一个流缓冲区来同步C的标准流。通过std :: ios_base :: sync_with_stdio函数可以解除这种同步,让std :: cin和std :: cout不再经过缓冲区,自然就节省了许多时间。

3. std::cin.tie(nullptr);
函数std :: ios :: tie的解释是

Get/set tied stream
The first form (1) returns a pointer to the tied output stream.

The second form (2) ties the object to tiestr and returns a pointer to the stream tied before the call, if any.

The tied stream is an output stream object which is flushed before each i/o operation in this stream object.

C++11
By default, the standard narrow streams cin and cerr are tied to cout, and their wide character counterparts (wcin and wcerr) to wcout. Library implementations may also tie clog and wclog.

这个现在看起来就比较容易理解了,因为std :: cin默认是与std :: cout绑定的,所以每次操作的时候(也就是调用”<<”或者”>>”)都要刷新(调用flush,这样增加了IO的负担,通过tie(nullptr)来解除std :: cin和std :: cout之间的绑定,来降低IO的负担使效率提升。

最新文章
球球大作战段位升级规则 段位升降顺序介绍
球球大作战随着新版本以及新赛季的来袭,游戏的段位也开始发生了一些变化,这玩家来说可能需要重新的了解一下段位的一些规则,面对着全新的规则,玩家要如何去面对呢?那么接下来小编就来和大家详细的说说吧! 1、在自由模式中排名前25名,
韩国非常大度的电影原声,网友分享:每一段旋律都触动心弦,令人沉醉!
韩国非常大度的电影原声成为近年来电影产业中备受瞩目的亮点之一,它以开放包容的姿态和多样化的表现方式赢得了世界观众的喜爱。这种“大度”不仅体现在音乐风格的多元融合,还在于其对文化传统和现代元素的大胆结合。韩国非常大度的电影原
谁去吧孟子义电池给扣了,感觉她有ai自动回复功能 孟子义 李雪琴 徐志胜 搞笑 内娱
{{if !data.isVip && data.isActText}}{{else if !data.isVip && !data.isActText}}{{else}}{{if !data.isNormalVip}}{{if data.expiredVip && data.isActText}}{{else if data.expiredVip && !data.isActText}}{{else}}{{/if}}{{else if d
远足旅行行业PPT/Keynote/谷歌幻灯片三合一模板
扑奔PPT提供精美好看的户外旅游ppt模板旅游推广ppt模板欧美PPT模板远足旅行行业PPT/Keynote/谷歌幻灯片三合一模板,本主题是欧美PPT模板远足旅行行业PPT/Keynote/谷歌幻灯片三合一模板,附件大小为5.66MB。 远足旅行行业PPT/Keynote/谷歌幻
进口食用香精规范申报指南思路/国外食用香精进口清关,万件成功案例
进口食用香精规范申报指南思路/国外食用香精进口清关,万件成功案例——我司上海卓鹰提供海外提供|空运海运|进口清关|进口报关|代理报关|清关代理|进口货代|进口代理|外贸代理|国内派送|保税仓储服务,是靠谱的上海报关公司|上海清关公司|上
用AI绘画神器轻松生成超逼真美女写真,快来试试!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 当你滑动手机屏幕,看到那些令人惊艳的美女写真,是不是也曾幻想过要拥有一张属于自己的高清
速度提升1000倍,效果还全面碾压!JHU等提出首个可渲染HDR场景的3DGS
常见的RGB图像大都为低动态范围(Low Dynamic Range, LDR),亮度的取值范围在[0,255]之间。然而人眼对亮度的感知范围要比RGB图像宽广得多,一般为[0,+∞],导致LDR图像很难反映真实场景的亮度范围,使得一些较暗或者较亮的区域的细节难以
梦想改造家收费价格表相关攻略推荐
房子买了,装修很重要,水电装饰是最重要的。对于许多业主来说,水电改造在不知情的情况下花了很多钱。事实上,如果您了解装修过程中的一些流程和价格,可以节省大量不必要的开支。让小编与您分享改造水电价格和水电改造验收流程吧!装修水
高清美女写真生成必备:2023年AI绘画工具大曝光!
在这个数字化时代,AI技术的飞速发展让我们几乎可以绘制出任何想象中的画面。想象一下,你可以坐在家里,只需几键,便能生成一张超逼真的美女写真,这不仅是一种艺术表达,更是一种全新的社交方式。那么,亲爱的家人们,你是否好奇,究竟有
新浪微博超级粉丝通是什么?怎样进行微博广告推广?
超级粉丝通推广平台是一种微博信息流广告投放平台,是以新浪微博广告的形式进行产品的推广与宣传,可以将产品的推广信息快速、准确的投放给目标用户,也可以出现在微博文章流的固定位置,从而进行精准投放与高效曝光的需求。一、超级粉丝通
相关文章
推荐文章
发表评论
0评