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

C++不同的头文件中各种函数的操作使用(长期更新,找到新的就补充进来)

一、万能头文件

#include <bits/stdc++.h>

万能头文件中包含的内容

// 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 

缺点

  • 不是GNU C++库的标准头文件,在部分情况下会编译失败;

  • 包含了很多不必要的东西,会大大增加编译时间,但不会影响运行时间。

二、 C++对数据的输入输出格式控制

2.1 C语言输出的控制(对齐+占位)
#include<stdio.h>
int main()
{int a;scanf("%d",&a);// 表示占8个字符的宽度,负号表示左对齐print("%-8d",a);            return 0;
}   
2.2 C++语言输出的控制(对齐+占位)
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{int a;cin>>a;// 表示占8个字符的宽度,left表示左对齐cout<<setw(8)<<left<<a<<endl;// 表示占8个字符的宽度,right表示右对齐cout<<setw(8)<<right<<a<<endl;return 0;
}

输出样例:八个字符的宽度,右对齐。

三、C++对浮点类型数据的操作

3.1 保留小数问题

#include<iomanip>

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{	double number=3.1415926535;// 四舍五入保留两位小数cout<<fixed<<setprecision(2)<<number<<endl;// 取整样例double number1 = 2.8;double number2 =-2.8;// 向下取整cout<<floor(number1)<<" "<<floor(number2)<<endl;// 向上取整cout<<ceil(number1)<<" "<<ceil(number2)<<endl;// 四舍五入cout<<round(number1)<<" "<<round(number2)<<endl;return 0;
}

输出样例:保留两位小数

 

3.2 浮点数的精度操作
函数名称函数说明2.8-2.8
floor不大于变量的最大整数(向下取整)2-3
ceil不小于变量的最小整数(向上取整)3-2
round四舍五入3-3

四、C++中string的处理

4.1 普通的string读取是到空格结束的
#include<iostream>
#include<string>
using namespace std;
int main()
{   // 只能读取连续的字符串// eg: asdfghjklstring str;cin>>str;cout<<str<<endl;return 0;
}

输出样例:输入Hello World,只输出Hello

 

4.2 getline读取一行

头文件

#include<string>

功能

1. getline(cin, str);   // 读取一行,包括空格

2. getline(cin, str,':');  // 指定用":"作为界定符,读取":"之前的内容,默认的界定符是"\n"

3. getline可以用于检测空行,并作出处理。

#include<iostream>
#include<string>
using namespace std;
int main()
{// 按行读取,有空格也能读入// eg: hello   worldstring str;getline(cin, str);cout << str << endl;return 0;
}

输出样例:输入Hello World,输出Hello World

 

4.3 大小写转换
#include<iostream>
#include<cctype>
using namespace std;
int main()
{string str;cin >> str;for (int i = 0; i < str.length(); i++) {if (str[i] >= 'A' && str[i] <= 'Z')str[i] = tolower(str[i]);else if (str[i] >= 'a' && str[i] <= 'z')str[i] = toupper(str[i]);}cout << str << endl;
}

输出样例:将输入的字符串中的内容,大写转换为小写,小写转换为大写。

五、算法头文件

#include<algorithm>

5.1 sort() 排序

sort(arr,arr+size);                               // 默认为升序

sort(zrr,arr+size,greater<int>());        // 为降序

#include<iostream>
#include<algorithm>
using namespace std;
bool compare1(int a, int b);
bool compare2(int a, int b);
void Print(int arr[], int size);
int main()
{int arr[] = { 1,3,5,7,9,8,6,4,2 };int size = sizeof(arr) / sizeof(arr[0]);cout << "升序排列:" << endl;sort(arr,arr+size);Print(arr, size);cout << "降序排列:" << endl;sort(arr, arr + size, greater<int>());Print(arr, size);cout << "========================================" << endl;cout << "用自定义比较器来做比较" << endl;sort(arr, arr + size, compare1);cout << "升序排列:" << endl;Print(arr, size);sort(arr, arr + size, compare2);cout << "降序排列:" << endl;Print(arr, size);return 0;
}
bool compare1(int a, int b)
{return a < b;
}
bool compare2(int a, int b)
{return a > b;
}
void Print(int arr[],int size)
{for (int i = 0; i < size; i++){cout << arr[i] << " ";}cout << endl;
}

输出样例:输入一个int类型的数组,用algorithm库中的sort函数实现升序和降序的排列,默认是升序。通过自定义比较器,同理可比较,进行升序降序排列。 

用vector容器同理

vector容器的用法可以参考蓝字文章。

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool compare1(int a, int b);
bool compare2(int a, int b);
void Print(vector<int> arr);
int main()
{vector<int> arr = { 1,3,5,7,9,8,6,4,2 };	cout << "升序排列:" << endl;// 用迭代器进行访问sort(arr.begin(),arr.end());Print(arr);cout << "降序排列:" << endl;sort(arr.begin(), arr.end(), greater<int>());Print(arr);cout << "========================================" << endl;cout << "用自定义比较器来做比较" << endl;sort(arr.begin(), arr.end(), compare1);cout << "升序排列:" << endl;Print(arr);sort(arr.begin(), arr.end(), compare2);cout << "降序排列:" << endl;Print(arr);return 0;
}
bool compare1(int a, int b)
{return a < b;
}
bool compare2(int a, int b)
{return a > b;
}
void Print(vector<int> arr)
{for (vector<int>::iterator it = arr.begin(); it != arr.end(); it++){cout << *it << " ";}cout << endl;
}

输出样例:

5.2 max() 最大值,min() 最小值

5.3 swap() 交换

六、数学函数头文件

#include<math.h>

#include<cmath>

6.1 pow(底数,幂数)

6.2 sqrt(x) // 计算x的平方根,例如sqrt(16)的平方根是4.0

6.3 abs() 绝对值

6.4 ‌sin(x),cos(x),tan(x) 分别计算x的正弦、余弦、正切值。这些函数接受以弧度为单位的角度作为输入。

6.5 log(x)和log10(x) 分别计算x的自然对数和以10为底的对数。

6.6 exp(x) 计算e的x次幂,其中e是自然对数的底。

相关文章:

  • IntelliJ IDEA 2024.1.4 (Ultimate Edition)找不到Add Framework Support解决方法
  • 【MySQL】基本查询
  • 侧边菜单的展开和折叠
  • 领域驱动DDD三种架构-分层架构、洋葱架构、六边形架构
  • 通过openAI的Chat Completions API实现一个支持追问的ChatGPT功能集成
  • 初试AngularJS前端框架
  • 【AI驱动 TDSQL-C Serverless 数据库技术实战营】AI赋能电商数据管理
  • 【AI大模型】向量及向量知识库
  • C++的智能指针
  • Java爬虫抓取数据的艺术
  • 电脑ip地址怎么换地区:操作步骤与利弊分析
  • 【学习笔记】TLS/SSL握手之Records
  • 智能新宠:BabyAlpha A2开启家庭机器人新时代
  • 【JAVA】synchronized 关键字的底层实现涉及得三个队列
  • Python知识点:如何使用Python进行物联网数据处理
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • canvas 五子棋游戏
  • flutter的key在widget list的作用以及必要性
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Linux中的硬链接与软链接
  • Spring Boot MyBatis配置多种数据库
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 关于字符编码你应该知道的事情
  • 强力优化Rancher k8s中国区的使用体验
  • 使用 QuickBI 搭建酷炫可视化分析
  • 一文看透浏览器架构
  • #if等命令的学习
  • #Lua:Lua调用C++生成的DLL库
  • #vue3 实现前端下载excel文件模板功能
  • $$$$GB2312-80区位编码表$$$$
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (SERIES10)DM逻辑备份还原
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (接口封装)
  • (七)Flink Watermark
  • (译) 函数式 JS #1:简介
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .equals()到底是什么意思?
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET C# 操作Neo4j图数据库
  • .NET Framework .NET Core与 .NET 的区别
  • .Net IE10 _doPostBack 未定义
  • .NET 通过系统影子账户实现权限维持
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • .sys文件乱码_python vscode输出乱码