分享好友 最新动态首页 最新动态分类 切换频道
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的负担使效率提升。

最新文章
终于呈现“途游四川麻将外卦神器下载安装”其实确实有挂
您好:途游四川麻将外卦神器下载安装这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是
青橙智能锁24小时售后服务电话热线/故障维修客服中心 - 生活 - 百科知识-蓝心网
青橙智能锁售后服务热线-服务电话400-658-8618青橙智能锁是一家专业从事青橙智能锁生产和销售的公司。作为一家以用户体验为核心的企业,青橙智能锁致力于为客户提供优质的售后服务。无论是安装、使用还是维修,我们都秉承着高效、及时、真
抖音直播代运营费用如何?揭秘直播代运营价格背后的秘密!
随着抖音直播的火爆,越来越多的商家开始考虑通过代运营的方式进入这个领域。然而,对于许多初次接触代运营的商家来说,代运营费用是一个令人困惑的问题。本文将详细解析抖音直播代运营费用的构成及背后的秘密。我们要明确的是,抖音直播代
网站空间按流量计费,合理分配资源,降低企业成本,流量计费网站空间,智能资源分配,助力企业成本优化,智能流量计费网站空间,资源优化,企业成本效益双提升
流量计费网站空间通过合理分配资源,有效降低企业成本,实现智能资源管理,助力企业优化成本结构。1、服务商信誉选择信誉良好的服务商,能确保网站空间稳定、安全,建议企业在选择服务商时,参考其他用户的评价、口碑等因素。2、技术支持网
云豹直播系统源码搭建部署教程
MySQL主从复制,读写分离部署(前提是自己安装的数据库,云rds自动支持读写分离,不需要我们自己配置)。下面介绍一下云豹直播系统源码搭建部署教程: 1、前期准备 两台服务器,装好MySQL.版本号5.5以上,最好是5.7,支持多线
超逼真美女写真生成工具大评测,教你轻松打造AI女神!
DeepAI是另一个以强大算法著称的AI生成工具,用户只需输入简单的关键词,便能生成令人惊叹的图片。它的优势在于快速且生成的图片质量较高,适合用户要求快速产出作品。相对的,个性化程度有所不足,用户对结果的控制能力有限。DALL-E基于Op
网易云音乐极致精简版v9.9.9
网易云音乐极致精简版v9.9.9是一款对音乐播放应用进行大幅度整改的版本,旨在为用户提供最纯粹的听歌体验。该版本去除了冗余的动态、视频等功能,只保留了核心的听歌功能,并几乎完全去除了广告内容,让用户可以专注于享受音乐。网易云音乐
直播带货运营培训课程:如何迅速崛起成为热门网红主播的疑惑解析?
三、掌握直播带货的运营技巧成功的直播带货不仅需要优质的产品,更需要高超的运营技巧。这包括如何制定有效的营销策略、如何选择合适的直播平台、如何策划吸引人的直播内容等。内容是直播带货的核心。要精心策划每一场直播的内容,确保其有
干货!CPC广告关键词怎么找?(广告术语cpc)
在讲广告之前,我还是希望给大家提个建议,首先打造一个高质量的 listing,转化做到20%(当然这个数据不一定就是20%,至少处于类目的平均水平),标题,主图,A+,五点,描述,价格, 带图片和视频的 review,QA 辅助(QA如何布局?不能忽
菏泽百度推广,菏泽抖音推广,菏泽搜狗推广,菏泽百度代理,菏泽搜狗代理,菏泽360代理,菏泽网站建设公司,菏泽网站优化公司
网站编号:24439最后点入:2024-12-12 09:16:34· 加入时间:2024-09-30 22:45:16网站关键词(64个字符):菏泽百度推广、菏泽抖音推广、菏泽搜狗推广、菏泽百度代理、菏泽抖音代理、菏泽搜狗代理、菏泽朋友圈广告、菏泽小程序开发、菏泽网站
相关文章
推荐文章
发表评论
0评