C++初入(四)

1.万能头文件

cpp 复制代码
#include <bits/stdc++.h>

里面包含了大量我们日常所需的头文件,如果使用它,我们就可以减少大量时间去写头文件,但是其实在平常练习和实际运用中,该头文件几乎没有实际价值,原因:1.里面虽然包含大量头文件,但是并不全面 2.对于我们学习过程中不利于养成好的习惯。所以,如果你是为了打比赛节省时间,那么使用该头文件不失为一种好的方法,但建议平时学习过程中还是自己动手为主,实在忘了头文件,可以去下面这个网址上查找,而非因小失大:

cplusplus.com - The C++ Resources Network

下面我们也把该头文件所包含的内容写出来,大家可以适当了解下!

cpp 复制代码
// C
#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
 
#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif
 
// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
 
#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#endif

注:转载自【C++】万能头文件 <bits/stdc++.h> 的用法和优缺点-CSDN博客

2.取消同步流操作

相信大家很多人对此了解不是很多,什么是取消同步流呢?

说简单点就是加快cin/cout读取速度!

比较与printf/scanf,cin/cout读取速度是有明显的降低的,原因便在于:对于cin/cout来说,内部读写需要自动判断变量类型以及其他种种原因浪费大量时间,而printf/scanf则不同,它们是明确了类型的,所以读取效率相对较高,那么我们有没有解决办法呢?

sure,我们此时就可以通过取消同步流操作来加快读写速度!

看代码:

cpp 复制代码
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

如果你在实际需要中读写量非常大的情况下,可以通过取消同步流来进行优化,特别是在比赛用途上!

3.scanf知识扩展

如果我们想通过scanf读取一行数据,并且该数据是有空格存在的,该如何操作呢?

例如:读取:hello world!

此时我们就来补充下新的知识,我们可以用下面代码所示方法进行读取:

cpp 复制代码
char s[20];
scanf("%[^\n]", s);//[^\n]表示非换行继续读取
cpp 复制代码
int main()
{
	char s[20];
	scanf("%[^\n]", s);
	printf("%s", s);
	return 0;
}

结果:

当然,实际运用并不多,而且还麻烦,我们C++还是以cin读取为主,大家可以适当了解,知道有这个东西就行。

4.理解缓冲区概念

大家如果学习一段时间的编程语言,那么或多或少都会听过缓冲区这个术语,那么什么是缓冲区呢?

定义:缓冲区是指一个存储区域,可以保存数据,以便减少刷屏次数。

规则:读cin会刷新一次cout,在·程序非正常终止也会刷新cout。

作用:使我们可以看到程序运行结果不是一个个符号依次出现再刷屏得到下一个符号,使得一部分符号同时出现,大大方便了观察和实际运用。大家如果对这方面有兴趣,可以自行去深入学习,这里只是简单介绍。

最后,寒假冲啊!!!

相关推荐
郝学胜-神的一滴9 分钟前
线程同步:并行世界的秩序守护者
java·linux·开发语言·c++·程序人生
superman超哥10 分钟前
Rust 移动语义(Move Semantics)的工作原理:零成本所有权转移的深度解析
开发语言·后端·rust·工作原理·深度解析·rust移动语义·move semantics
im_AMBER10 分钟前
Leetcode 95 分割链表
数据结构·c++·笔记·学习·算法·leetcode·链表
青茶36012 分钟前
【js教程】如何用jq的js方法获取url链接上的参数值?
开发语言·前端·javascript
明洞日记14 分钟前
【VTK手册032】vtkImageConstantPad:医学图像边界填充与尺寸对齐
c++·图像处理·vtk·图形渲染
Aevget21 分钟前
MFC扩展库BCGControlBar Pro v37.1亮点:Ribbon Bar组件全新升级
c++·ribbon·mfc·bcg·界面控件·ui开发
superman超哥21 分钟前
Rust 所有权转移在函数调用中的表现:编译期保证的零成本抽象
开发语言·后端·rust·函数调用·零成本抽象·rust所有权转移
xiaowu08022 分钟前
C# 把dll分别放在指定的文件夹的方法
开发语言·c#
cchjyq28 分钟前
嵌入式按键调参:简洁接口轻松调参(ADC FLASH 按键 屏幕参数显示)
c语言·c++·单片机·mcu·开源·开源软件
程序炼丹师28 分钟前
std::runtime_error是否会终止程序
c++