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

news2024/9/28 8:11:12

一、万能头文件

#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: asdfghjkl
    string 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   world
    string 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是自然对数的底。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2172905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧城市交通管理中的云端多车调度与控制

城市交通管理中的云端多车调度与控制 智慧城市是 21世纪的城市基本发展方向&#xff0c;为了实现智慧城市建设的目标&#xff0c;人们需要用现代化的手段去管理和控制城市中的各种资源和设施。智能交通控制与管理是智慧城市中不可缺少的一部分&#xff0c;因为现代城市交通系统…

优化|基于深度学习的不动点算子优化的热启动方法

原文信息&#xff08;包括题目、发表期刊、原文链接等&#xff09;&#xff1a;Learning to Warm-Start Fixed-Point Optimization Algorithms 原文作者&#xff1a;Rajiv Sambharya, Georgina Hall, Brandon Amos, and Bartolomeo Stellato 论文解读者&#xff1a;陈宇文 编…

C++模版类实现栈

text.h #ifndef TEXT_H #define TEXT_H#include <stdexcept> // 用于 std::out_of_rangetemplate <typename T> class MyStack { private:T* data; // 指向底层数组的指针int capacity; // 容量int top; // 栈顶索引int size; // 当前元…

了解Webpack并处理样式文件

目录 引入定义安装和使用配置文件命令配置单独文件指定文件 处理样式css-loader使用 style-loaderless-loaderPostCSSpostcss-loaderpostcss-preset-env 引入 随着前端的快速发展&#xff0c;目前前端的开发已经变的越来越复杂了&#xff1a; 比如开发过程中我们需要通过模块化…

物联网系统中高精度压力检测方案_压力变送器

01 物联网系统中为什么要使用压力变送器 在物联网系统中使用压力变送器的原因主要基于以下几个方面&#xff1a; 感知层的核心作用 物联网系统主要由感知层、传输层、平台层和应用层组成。感知层作为物联网的“排头兵”&#xff0c;负责收集物理世界中的各种信息。压力变送…

十大排序算法总结

完整文档见 排序算法总结——语雀文档 比较类排序&#xff1a;通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c;因此也称为非线性时间比较类排序。 非比较类排序&#xff1a;不通过比较来决定元素间的相对次序&#xff0c;它可以突破…

李宏毅机器学习2022-HW9--Explainable AI

Task CNN explanation 11种食物图片分类&#xff0c;与HW3使用同一个dataset Bread, Diary product, Dessert, Egg, Fried food, Meat, Noodles/Pasta, Rice, Seafood, Soup, and Vegetables/Fruit 训练一个CNN model用于classification&#xff0c;并做一些explanations …

一站式家装服务管理系统

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本一站式家装服务管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数…

可商业化的数字孪生系统

可商业化的数字孪生系统 相关链接 演示地址 演示地址 更多获取 更多获取 源码地址 源码地址 数字孪生系统 数字孪生系统&#xff08;Digital Twin System&#xff09;是新一代科技赋能的核心技术&#xff0c;通过虚拟与现实的双向映射&#xff0c;实现对物理世界的全面感…

GAMES101(17~18节,物理材质模型)

材质 BRDF 材质&#xff1a;决定了光线与物体不同的作用方式 BRDF定义了物体材质,包含漫反射和镜面部分 BSDF &#xff08;scattering散射&#xff09; BRDF&#xff08;reflect反射&#xff09; BTDF 光线打击到物体上会向四面八方散射 反射 光线打击到物体上反射出去…

基于Java+SQL Server2008开发的(CS界面)个人财物管理系统

一、需求分析 个人财务管理系统是智能化简单化个人管理的重要的组成部分。并且随着计算机技术的飞速发展&#xff0c;计算机在管理方面应用的旁及&#xff0c;利用计算机来实现个人财务管理势在必行。本文首先介绍了个人财务管理系统的开发目的&#xff0c;其次对个人财务管理…

【C语言】指针篇 | 万字笔记

写在前面 在学习C语言过程&#xff0c;总有一个要点难点离不开&#xff0c;那就是大名鼎鼎的C语言指针&#xff0c;也是应为有指针的存在&#xff0c;使得C语言一直长盛不衰。因此不才把指针所学的所有功力都转换成这个笔记。希望对您有帮助&#x1f970;&#x1f970; 学习指…

【STM32开发环境搭建】-1-Keil(MDK) 5.27软件安装和注册教程

目录 1 安装前装备工作 2 安装KEIL(MDK-ARM) 5.27软件 3 注册KEIL(MDK-ARM) 5.27软件&#xff0c;获取License许可证 4 手动安装STM32F0&#xff0c;STM32F1&#xff0c;STM32F4&#xff0c;STM32F7&#xff0c;STM32H7的支持包 4.1 下载STM32的支持包 4.2 安装STM32的支…

JavaScript 中变量命名的最佳实践

全篇大概1500 字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间5分钟。 1. 避免使用 var 关键字&#xff1a;过时的产物 在现代 JavaScript 中&#xff0c;我们通常避免使用 var&#xff0c;而是选择 let 和 const&#xff0c;它们提供更可预测和块范围的行为&#x…

C++初阶:STL详解(七)——list的模拟实现

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 前言&#xff1a; 我们前面已经了解到了lis…

helm3 部署项目应用示例

一、用到的插件 1、存储卷-日志外挂&#xff1a; 存储类自己提前建 2、env变量-存储nacos信息 二、新建项目 # helm create test-gateway 三、修改values.yaml ## 删除内容 # Additional volumes on the output Deployment definition. volumes: [] # - name: foo # se…

助力智能作物植株统计分析,基于YOLOv7全系列【tiny/l/x】参数模型开发构建田间作物场景下智能精准小麦麦穗检测识别计数系统

农业实验研究的一些场景下&#xff0c;尝尝有对指定视野区域内作物植株数量进行便捷化智能自动化统计计数的需求&#xff0c;诸如&#xff1a;棉花植株统计、小麦植株统计、水稻植株统计等等&#xff0c;这些农业实验场景下&#xff0c;单纯依靠人工数数的方式来进行植株计数是…

SpringBoot--yml配置文件的时间/大小的单位转换

原文网址&#xff1a;SpringBoot--yml配置文件的时间/大小的单位转换_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringBoot的yml&#xff08;properties&#xff09;配置文件的时间/大小的单位转换。 概述 SpringBoot可以将yml中的配置绑定到一个Java类的字段&#x…

论文笔记——Graph Bottlenecked Social Recommendation

文章地址 代码地址 1.1简介 随着社交网络的出现&#xff0c;社交推荐已经成为个性化服务的重要技术。最近&#xff0c;基于图的社交推荐通过捕捉高阶社交影响显示出了有希望的结果。大多数基于图的社交推荐的经验研究直接将观察到的社交网络纳入公式&#xff0c;并基于社交同…

【注册/登录安全分析报告:孔夫子旧书网】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…