准备蓝桥杯和ACM:C++标准库头文件及其常用功能简介

概述

        在C++编程中,标准库为开发者提供了丰富的工具和功能,使得代码更简洁、易于维护。本文将深入探讨一些常用的C++标准库头文件,如<iostream><algorithm><string>等,以及它们所提供的基本功能与常见用法。通过对这些头文件的理解和应用,开发者能够更加高效地进行程序设计和开发。

目录

概述

详解

#include

#include

#include

#include  

#include

#include

#include

using namespace std;

总结

1.

2.

3.

4.

5.

6.

7.

8. using namespace std;


详解

#include<iostream>

        #include <iostream> 是C++中用于包含iostream头文件的预处理指令。这个头文件提供了输入和输出流的基本功能,使得你可以使用 cin 和 cout 这两个流对象来进行控制台输入和输出。

以下是一些常见的用法:

1. 输出到控制台 (cout):

   #include <iostream>

   using namespace std;



   int main() {

       cout << "Hello, World!" << endl;

       return 0;

   }

   上述代码使用 cout 将字符串 "Hello, World!" 输出到控制台,并在末尾加上 endl 以换行。

2. 从控制台输入 (cin):
  

 #include <iostream>

   using namespace std;



   int main() {

       int x;

       cout << "Enter a number: ";

       cin >> x;

       cout << "You entered: " << x << endl;

       return 0;

   }

        上述代码使用 cin 从用户处接收输入,并将输入的整数存储在变量 x 中,然后将其输出到控制台。

3. 控制格式输出:

 #include <iostream>

   #include <iomanip>

   using namespace std;



   int main() {

       double pi = 3.141592653;

       cout << fixed << setprecision(2) << "Value of pi: " << pi << endl;

       return 0;

   }

  

        上述代码使用 fixed 和 setprecision 控制输出格式,将 pi 的值输出为小数点后两位。

        #include <iostream> 是C++标准库中的一部分,它包含了一些用于标准输入输出的基本工具,是C++程序中常见的头文件之一。


#include<algorithm>

        #include <algorithm> 是C++中用于包含 algorithm 头文件的预处理指令。这个头文件提供了一系列的算法,涵盖了很多常见的操作,例如排序、查找、删除等。以下是一些常见的算法及其用法:

1. 排序(Sort):

 #include <algorithm>

   #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector = {3, 1, 4, 1, 5, 9, 2, 6, 5};

       sort(myVector.begin(), myVector.end());  // 对容器进行升序排序



       // 现在 myVector 为 {1, 1, 2, 3, 4, 5, 5, 6, 9}

      

       return 0;

   }

2. 查找(Find):

   #include <algorithm>

   #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector = {3, 1, 4, 1, 5, 9, 2, 6, 5};

       auto it = find(myVector.begin(), myVector.end(), 4);  // 查找值为4的元素



       // 如果找到,it 指向找到的元素;如果没找到,it 等于 myVector.end()



       return 0;

   }

 

3. 最大值(Max):

  #include <algorithm>

   using namespace std;



   int main() {

       int a = 5, b = 8;

       int maxVal = max(a, b);  // 返回a和b中的最大值



       return 0;

   }

  

4. 最小值(Min):

#include <algorithm>

   using namespace std;



   int main() {

       int a = 5, b = 8;

       int minVal = min(a, b);  // 返回a和b中的最小值



       return 0;

   }

  

5. 反转(Reverse):

 #include <algorithm>

   #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector = {1, 2, 3, 4, 5};

       reverse(myVector.begin(), myVector.end());  // 反转容器



       // 现在 myVector 为 {5, 4, 3, 2, 1}

      

       return 0;

   }

        #include <algorithm> 提供了许多其他有用的算法,可以根据需要选择使用。这个头文件是C++标准库的一部分。


#include<string>

        #include <string> 是C++中用于包含 string 头文件的预处理指令。这个头文件定义了 C++ 标准库中的字符串类 std::string,它提供了一种更现代、更安全、更方便的处理字符串的方式。

        以下是一些使用 std::string 的示例:

1. 字符串声明和初始化:

  #include <string>

   using namespace std;



   int main() {

       string myString = "Hello, World!";

       // 或者

       // string myString("Hello, World!");



       return 0;

   }

2. 字符串拼接:

  #include <string>

   using namespace std;



   int main() {

       string str1 = "Hello, ";

       string str2 = "World!";

       string result = str1 + str2;  // result 包含 "Hello, World!"



       return 0;

   }

 

3. 字符串长度:

#include <string>

   using namespace std;



   int main() {

       string myString = "Hello, World!";

       int length = myString.length();  // 返回13



       return 0;

   }

4. 字符串查找:

 #include <string>

   using namespace std;



   int main() {

       string myString = "Hello, World!";

       size_t found = myString.find("World");  // 返回位置的索引,如果找不到返回 string::npos



       return 0;

   }

  

5. 字符串子串:

 #include <string>

   using namespace std;



   int main() {

       string myString = "Hello, World!";

       string subString = myString.substr(7, 5);  // 返回 "World"



       return 0;

   }

 

        使用 std::string 类型通常比使用C风格字符串更安全,并提供了更多的功能。它会自动处理字符串的内存管理,而无需手动管理内存。在C++中,推荐使用 std::string 来代替C风格的字符串。


#include<vector>  

        #include <vector> 是C++中用于包含 vector 头文件的预处理指令。这个头文件定义了C++标准库中的向量(vector)容器,它是一个动态数组,提供了许多便利的操作和功能。

        以下是一些使用 std::vector 的示例:

1. 声明和初始化:

   #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector;  // 声明一个整数向量

       // 或者

       // vector<int> myVector = {1, 2, 3, 4, 5};  // 初始化时赋值



       return 0;

   }

2. 添加元素:

   #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector;

       myVector.push_back(42);  // 在向量末尾添加元素



       return 0;

   }

  

3. 访问元素:

  #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector = {1, 2, 3, 4, 5};

       int element = myVector[2];  // 访问第三个元素,结果为3



       return 0;

   }

  

4. 遍历元素:

   #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector = {1, 2, 3, 4, 5};

       for (int i : myVector) {

           // 对每个元素执行操作

       }



       return 0;

   }

5. 获取向量大小:

 #include <vector>

   using namespace std;



   int main() {

       vector<int> myVector = {1, 2, 3, 4, 5};

       int size = myVector.size();  // 返回向量中的元素个数,结果为5



       return 0;

   }

  

        std::vector 是一个非常灵活和方便的容器,适用于需要动态大小数组的情况。它还提供了许多其他的成员函数,如插入、删除、清空等,使得在处理元素集合时更加方便。在C++中,std::vector 是一个常用的数据结构。


#include<map>

        #include <map> 是C++中用于包含 map 头文件的预处理指令。这个头文件定义了C++标准库中的 std::map 类型,它是一种关联容器,提供了键-值对的存储和检索。

        以下是一些使用 std::map 的示例:

1. 声明和初始化:

   #include <map>

   using namespace std;



   int main() {

       map<string, int> myMap;  // 声明一个字符串到整数的映射

       // 或者

       // map<string, int> myMap = {{"one", 1}, {"two", 2}, {"three", 3}};  // 初始化时赋值



       return 0;

   }

  

2. 插入键值对:

   #include <map>

   using namespace std;



   int main() {

       map<string, int> myMap;

       myMap["one"] = 1;  // 插入键值对

       myMap["two"] = 2;

       myMap["three"] = 3;



       return 0;

   }

  

3. 访问元素:

   #include <map>

   using namespace std;



   int main() {

       map<string, int> myMap = {{"one", 1}, {"two", 2}, {"three", 3}};

       int value = myMap["two"];  // 访问键为"two"的值,结果为2



       return 0;

   }

4. 遍历元素:

   #include <map>

   using namespace std;



   int main() {

       map<string, int> myMap = {{"one", 1}, {"two", 2}, {"three", 3}};

       for (const auto& pair : myMap) {

           // 对每个键值对执行操作

       }



       return 0;

   }

  

5. 查找键是否存在:

 #include <map>

   using namespace std;



   int main() {

       map<string, int> myMap = {{"one", 1}, {"two", 2}, {"three", 3}};

       if (myMap.find("two") != myMap.end()) {

           // 键"two"存在

       }



       return 0;

   }

        std::map 提供了一种高效的键-值对存储方式,其中的键是唯一的,因此可以用于创建字典或进行快速查找。它是C++中常用的关联容器之一。


#include<queue>

        #include <queue> 是C++中用于包含 queue 头文件的预处理指令。这个头文件定义了C++标准库中的 std::queue 类型,它是一个队列容器,遵循先进先出(FIFO)的原则。

        以下是一些使用 std::queue 的示例:

1. 声明和初始化:

   #include <queue>

   using namespace std;



   int main() {

       queue<int> myQueue;  // 声明一个整数队列

       // 或者

       // queue<int> myQueue({1, 2, 3});  // 初始化时赋值



       return 0;

   }

  

2. 入队和出队:

   #include <queue>

   using namespace std;



   int main() {

       queue<int> myQueue;

       myQueue.push(1);  // 将元素1入队

       myQueue.push(2);  // 将元素2入队



       int frontElement = myQueue.front();  // 获取队头元素,结果为1

       myQueue.pop();  // 出队



       return 0;

   }

  

3. 判断队列是否为空:

   #include <queue>

   using namespace std;



   int main() {

       queue<int> myQueue;

       if (myQueue.empty()) {

           // 队列为空

       }



       return 0;

   }

4. 获取队列大小:

  #include <queue>

   using namespace std;



   int main() {

       queue<int> myQueue = {1, 2, 3};

       int size = myQueue.size();  // 返回队列中的元素个数,结果为3



       return 0;

   }

5. 清空队列:

   #include <queue>

   using namespace std;



   int main() {

       queue<int> myQueue = {1, 2, 3};

       myQueue.empty();  // 清空队列



       return 0;

   }

        std::queue 提供了队列的基本操作,对于需要按照先进先出的规则进行数据处理的场景非常有用。它是C++中的标准库容器之一。


#include<cmath>

        #include <cmath> 是C++中用于包含cmath头文件的预处理指令。这个头文件提供了一系列用于数学计算的函数(cmath表示C math)。以下是一些常用的cmath函数:

1. sqrt(x): 返回x的平方根。

   double result = sqrt(25.0);  // 结果为5.0

  

2. pow(x, y): 返回x的y次方。

double result = pow(2.0, 3.0);  // 结果为8.0

  

3. abs(x): 返回x的绝对值。

 int result = abs(-10);  // 结果为10

  

4. sin(x), cos(x), tan(x): 分别返回x的正弦、余弦和正切值,x的单位是弧度。 

   double angle = 3.14159 / 2.0;  // 90度转弧度

   double sinValue = sin(angle);  // 结果为1.0

5. log(x): 返回x的自然对数。

  double result = log(2.71828);  // 结果为1.0

  

6. log10(x): 返回x的以10为底的对数。

   double result = log10(100.0);  // 结果为2.0

7. ceil(x): 返回不小于x的最小整数。

   double result = ceil(4.3);  // 结果为5.0

  

8. floor(x): 返回不大于x的最大整数。

   double result = floor(4.9);  // 结果为4.0

        这些函数在数学和科学计算中经常使用,而#include <cmath> 是为了让你能够在程序中使用这些函数而引入的头文件。


using namespace std;

        using namespace std; 是一个C++中的语句,用于引入标准命名空间(std 命名空间)。在C++中,标准库中的大多数类、函数和对象都被定义在 std 命名空间中。

        引入 std 命名空间后,你可以直接使用标准库中的类、函数和对象,而不需要在每个使用它们的地方都写上 std:: 前缀。这样可以减少代码的冗长,提高可读性。

示例:

#include <iostream>

using namespace std;



int main() {

    // 在这里可以直接使用标准库中的类和函数,而不需要写 std::

    cout << "Hello, World!" << endl;



    return 0;

}

        在上面的例子中,using namespace std; 允许我们在 main 函数中直接使用 cout 和 endl,而不必写成 std::cout 和 std::endl。

        需要注意的是,有时在大型项目或者需要避免命名冲突的情况下,可能会选择不使用 using namespace std;,而是在需要的地方显式使用 std:: 前缀。这有助于避免命名冲突和提高代码的可维护性。


总结

1. <iostream>

  • 功能: 提供输入输出流的基本功能。
  • 常用对象: cin(输入)和 cout(输出)。

2. <algorithm>

  • 功能: 提供多种算法,如排序、查找等。
  • 常用算法: sort, find, max, min, reverse

3. <string>

  • 功能: 定义了 std::string 类,用于字符串处理。
  • 常用操作: 字符串拼接、长度、查找等。

4. <vector>

  • 功能: 提供动态数组(向量)的实现。
  • 常用操作: 添加元素、访问、遍历、获取大小等。

5. <map>

  • 功能: 定义 std::map,用于键值对存储。
  • 常用操作: 插入、访问、遍历等。

6. <queue>

  • 功能: 提供队列(FIFO)的实现。
  • 常用操作: 入队、出队、获取队头元素等。

7. <cmath>

  • 功能: 提供数学计算函数,如平方根、幂运算等。
  • 常用函数: sqrt, pow, abs, sin, log 等。

8. using namespace std;

  • 功能: 引入标准命名空间,简化代码书写。
  • 注意事项: 在大型项目中可能会避免使用,以避免命名冲突。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

努比亚 Z17 NX563J Root 教程三方REC刷写工具教程

教程&#xff1a;1&#xff0c;自用成功 正常链接列表 adb devices 检查fastboot链接列表 fastboot devices 解锁设备fastboot oem nubia_unlock NUBIA_NX563J 我用的解锁设备是&#xff1a;fastboot flashing unlock 1.打开开发者选项。将OEM解锁的按钮打开 2.下载附件努…

苹果更新过时产品:三款 Mac 成“古董”,九款 Mac 彻底“停产”

9 月 24 日消息苹果今天更新了“过时产品”名单&#xff0c;新增加了三款 Mac 型号&#xff0c;并将另外九款 Mac 型号从“过时产品”归为“停产产品”。 新入列的 Mac 过时产品&#xff1a; MacBook Air&#xff08;视网膜显示屏&#xff0c;13 英寸&#xff0c;2018 年&…

物联网迎来下半场,国产 IoTOS 打造企业级智能硬件云服务平台

如有需求&#xff0c;文末联系小编 氦氪云 IoTOS 是一套先进的企业级物联网解决方案平台&#xff0c;为万物互联提供可靠安全稳定的终端接入、协议适配、消息路由、数据存储和分析、应用使能等核心功能。面向物联网领域中的终端设备商、系统集成商、应用服务商、能力提供商等&a…

Unity 设计模式 之 行为型模式 -【中介者模式】【迭代器模式】【解释器模式】

Unity 设计模式 之 行为型模式 -【中介者模式】【迭代器模式】【解释器模式】 目录 Unity 设计模式 之 行为型模式 -【中介者模式】【迭代器模式】【解释器模式】 一、简单介绍 二、中介者模式&#xff08;Mediator Pattern&#xff09; 1、什么时候使用中介者模式 2、使用…

CICD 持续集成与持续交付

一 、CICD是什么 CI/CD 是指持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;或持续交付&#xff08;Continuous Delivery&#xff09; 1.1 持续集成&#xff08;Continuous Integration&#xff09; 持续集…

卸载WSL(Ubuntu),卸载linux

禁用 WSL 功能 打开 Windows 功能&#xff1a; 按下 Windows R 打开运行对话框&#xff0c;输入 optionalfeatures&#xff0c;然后按回车。 禁用 WSL&#xff1a; 在弹出的 Windows 功能窗口中&#xff0c;找到 适用于 Linux 的 Windows 子系统&#xff08;Windows Subsystem…

FTP 服务器 linux安装

文章目录 前言一、了解二、安装启动匿名连接 三、创建用户1. 创建系统用户2. 连接3. 连接不上&#xff1f; 5004. 还是连接不上&#xff1f; 5005. 还还还是连不上&#xff1f;530 补充关于创建用户useradd 命令如何设置用户不能登录shell不用系统指定的家目录 vsftpd 配置chro…

深刻理解Redis集群(上):RDB快照和AOF日志

RDB快照 save同步阻塞 客户端 服务端 .conf配置文件 # The filename where to dump the DB dbfilename dump.rdb# rdb-del-sync-files是Redis配置文件中的一个选项&#xff0c;它的作用是在主节点上执行BGSAVE或AOF持久化操作时&#xff0c;删除同步锁文件&#xff0c;以释放磁…

git工具指令

下面是常用的Git命令清单&#xff0c;几个专用名称的译名如下&#xff1a; Workspace &#xff1a;工作区 Index /Stage&#xff1a;暂存区 Repository&#xff1a;仓库区&#xff08;或本地仓库&#xff09; Remote&#xff1a;远程仓库新建代码库 在当前目录新建一个Git代…

java初识

目录 1.命名规范 2.数据类型 3.数据类型转换&#xff08;就是见识一下&#xff09; 4.java里面的输入输出 4.1判断是不是偶数 4.2判断是不是闰年 4.3其他的输入输出 4.4顺序的问题 5.分支语句补充 5.IDEA里面的调试 6.continue的一个案例 1.命名规范 这个命名规范就…

【Java SE】初遇Java,数据类型,运算符

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 1. Java 概述 1.1 Java 是什么 Java 是一种高级计算机语言&#xff0c;是一种可以编写跨平台应用软件&#xff0c;完全面向对象的程序设计语言。Java 语言简单易学…

Java基于easyExcel的自定义表格格式

这里用的到easyExcel版本为3.3.4 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.4</version></dependency> 效果 代码部分 package com.tianyu.test;import com.alibaba.exc…

57 长短期记忆网络(LSTM)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录长短期记忆网络&#xff08;LSTM&#xff09;门控记忆元输入门、忘记门和输出门候选记忆元 (相当于RNN中计算 H t H_t Ht​)记忆元隐状态 从零开始实现初始化模型参数定义模型训练和预测 简洁实现小结练习 长短期记忆网络&#xff08;LSTM&a…

【d53】【Java】【力扣】24.两两交换链表中的节点

思路 定义一个指针cur, 先指向头节点&#xff0c; 1.判断后一个节点是否为空&#xff0c;不为空则交换值&#xff0c; 2.指针向后走两次 代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*…

[数据集][目标检测]辣椒缺陷检测数据集VOC+YOLO格式695张5类别

重要说明&#xff1a;数据集图片里面都是一个辣椒&#xff0c;请仔细查看图片预览&#xff0c;确认符合要求下载 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文…

Nacos 是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台,旨在帮助开发者更轻松地构建、部署和管理微服务应用。

Nacos 是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台&#xff0c;旨在帮助开发者更轻松地构建、部署和管理微服务应用。Nacos 提供了一系列的功能来支持服务注册与发现、配置管理、服务元数据管理、流量管理、服务健康检查等&#xff0c;是构建云原生应用和服务网…

SpringCloud 2023各依赖版本选择、核心功能与组件、创建项目(注意事项、依赖)

目录 1. 各依赖版本选择2. 核心功能与组件3. 创建项目3.1 注意事项3.2 依赖 1. 各依赖版本选择 SpringCloud: 2023.0.1SpringBoot: 3.2.4。参考Spring Cloud Train Reference Documentation选择版本 SpringCloud Alibaba: 2023.0.1.0*: 参考Spring Cloud Alibaba选择版本。同时…

【软考】高速缓存的组成

目录 1. 说明2. 组成 1. 说明 1.高速缓存用来存放当前最活跃的程序和数据。2.高速缓存位于CPU 与主存之间。3.容量般在几千字节到几兆字节之间。4.速度一般比主存快 5~10 倍&#xff0c;由快速半导体存储器构成。5.其内容是主存局部域的副本&#xff0c;对程序员来说是透明的。…

Java:选择排序

目录 直接选择排序 堆排序 基本思想&#xff1a; 每一次从待排序的数据元素中选出最小(或最大)的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完。 直接选择排序 思路1&#xff1a; 在元素集合array[i]--array[n-1]中选择关键码最大(小…

​fl studio21.2.3.4004中文版永久2024最新下载安装图文详细使用教程​

随着数字音乐制作的快速发展&#xff0c;越来越多的音乐制作软件涌现出来&#xff0c;而FL Studio无疑是其中的佼佼者。作为一款功能强大、易于上手的音乐制作软件&#xff0c;FL Studio V21中文版在继承了前代版本优秀基因的基础上&#xff0c;进一步提升了用户体验&#xff0…