c++中各种库函数的大全(个人刷题补充版)

C++刷题秘籍 C++刷题秘籍 在经过一个暑假的刷题过程中(只刷了pat乙级和洛谷新手村),总结了一下一些很有用的知识和函数,了解这些可以再刷题的时候避免自己写一大堆不必要的代码,在做题的时候节省时间。不同的函数也可以开阔自己的解题思路,从而更快想出最佳的解答方法。如果有在用C++进行刷题的小伙伴可以看看。不足的地方也希望大家能够指出来,一起学习一起进步。 1、为什么用C++ C++的好处在于它和C语言一样是比较... 阅读详情

※bits/stdc++.h:万能头文件,偷懒必备,看竞赛是否严格要求。

※iostream库:用于io操作(一般必须包含),cin、cout

※iomanip库:常用在输出保留小数(或者有效数字),与cout,fixed,setprecision()函数结合使用

setw(n):设置字段宽度的函数,是 <iomanip> 的核心函数;

left/right:属于输入输出格式操纵符,定义在 <iomanip> 中;

※string库:与char用途的区别,string存储的是字符串、而char存储的是单个字符,

①并不能将char单个字符直接通过=赋值给string,例如

string last_none_zero(int sum){
	stringstream ss;
	ss << sum;
	string x = ss.str();
	int len = x.length() ;
//错误方法
	string last_num = x[len-1]; 
	return last_num;
}

    char c1 = 'a';   // ✅ 正确:单个字符用单引号
    char c2 = '12';  // ❌ 错误:char只能存1个字符
    char c3 = "a";   // ❌ 错误:双引号是字符串,不能赋值给char
    
    // ===== string的初始化 =====
    string s1 = "hello"; // ✅ 正确:多个字符用双引号
    string s2 = 'a';     // ❌ 错误:单引号的char不能直接赋值给string(需转换)
    string s3(1, 'a');   // ✅ 正确:用1个char构造string(你之前代码里用到的)
    string s4 = string(1, c1); // ✅ 正确:char转string的标准写法

②对string赋值单个字符串可以进行赋值操作,例如

//y的1位置赋值x[1]的字符
string x = "12434312";
string y(1,x[1]);

③如若需要截取字符串中的某一段的值,可以是同substr()函数

  • 索引越界:如果字符串长度为 0 或 1,调用substr(1)会返回空字符串(不会报错,但需注意);→ 解决:加判断if (temp_str.size() > 1)再调用substr(1)(如你代码中那样)。
  • 前导 0 问题:截取后得到 "04" 这类字符串,转数字时会自动变成 4(无需手动处理)。
  • 参数顺序:substr(pos, len)是 “起始位置 + 长度”,不是 “起始 + 结束位置”(新手易混淆)

④string.find()函数

1.在字符串内找到一个值,如'.',可以使用string.find('.')函数,若不存在这个值,则会返回-1,若存在,则返回这个值的下标(返回值:下标(从 0 开始))
2.多个相同字符:只返回第一个匹配的下标

场景返回值含义
字符串中包含 '0'数字(如 0、3、5)'0' 第一次出现的下标位置
字符串中不包含 '0'-1未找到

⑤string.insert()函数,可以直接将指定元素插入其位置当中 string.insert(pos,'.');

※cmath库:

① sqrt(x):返回x的正平方根

② abs(x):返回x的绝对值

※vector库:引入字符串头文件,用于处理字符串拼接、转换等操作

例如:vector<int> num()的操作;

① vector方便初始化

vector<int> count_arr(110, 0);  // 直接初始化所有元素为0,省去手动赋值

② vector不可以直接传数组,需要获取底层数组地址int* arr = v.data();把 vector 转成普通数组指针!!!!要把vector定义的数组传入函数,要传入num.data(),而非num[]。函数申明种可以用int num[]申明。

vector<int> num(n);
// 注意:vector不能直接传数组,需用.data()获取底层数组地址
cout << maxnum(num.data(), n) << endl;

③ 对于一些需要动态输入的数组更加方便!!!直接使用push_back动态扩容(向最后一个位置添加n),通过size()函数获取大小

while(cin >> n){
   		v.push_back(n);
   		cout << v.size() << endl;
	   }

④C++98 不支持vector<int> v = {1,2,3};:如果编译器是 C++98,改用push_back逐个添加。

⑤xxx.back()函数:返回数组最后一个值

注意:与xxx.begin(),xxx.end()区分,他们返回的是下标值,不是下标对应的元素值,若变成*xxx.begin(),*xxx.end(),则返回的下标对应的函数值!

⑥删除数组元素

1)pop_back()删除最后一个元素,会改变容器大小

vector<int> vec = {10, 20, 30};
vec.pop_back(); // 删除最后一个元素

2)使用erase()删除指定位置或范围内的元素:erase()函数可以删除指定位置的单个元素或指定范围内的多个元素,会改变容器大小

vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除第三个元素

3)使用remove()删除指定值的所有元素:remove()函数用于删除容器中所有与指定值相等的元素,但不会改变容器的大小。通常需要与erase()函数配合使用。示例如下:

vector<int> vec = {1, 3, 3, 4, 3, 5};
int it = remove(vec.begin(), vec.end(), 3); // 删除值为3的元素
vec.erase(it, vec.end()); // 调整容器大小

set库:一种类似数组的容器,可以与vector对比着学。

与vector区别:不可以随机访问,即无法通过数组那样的num[i]访问到元素,比较复杂

优点:有比较好用的函数,例如insert(x)函数,可以直接插入元素并剔除重复项并自动排序。

①定义

#include <set>
set<long long> num_set;

②插入元素insert()

 for (int i = 0; i < n; ++i) {
            cin >> num;
            num_set.insert(num);
        }

③访问全部元素(已排序),访问需要用到迭代器

你的set定义是set<long long> num_set(存储long long类型),迭代器的模板参数必须和容器一致:

  • 正确:set<long long>::iterator(迭代器遍历long long类型的 set)
  • 错误:set<int>::iterator(迭代器类型和容器元素类型不匹配,编译报错)
for (set<long long>::iterator it = num_set.begin(); it != num_set.end(); ++it) {
            if (first) {
                cout << *it;
                first = false;
            } else {
                cout << " " << *it;
            }
        }

// C++11及以上支持的简化写法
for (auto it = num_set.begin(); it != num_set.end(); ++it) {
    // 逻辑不变
}

※sstream库:引入字符串流头文件:用于整数和字符串的转换(替代C++11的to_string)

用法:

string int_to_string(int num) {
    // 创建字符串流对象:相当于一个"中转站",可以存数字/字符串
    stringstream ss;
    // 将整数num写入字符串流(把数字"存"进中转站)
    ss << num;
    // 从字符串流中提取出字符串并返回(把中转站的数字转成字符串)
    return ss.str();
}

①stringstream 在某些情况下可能会比直接操作数字慢,因为它涉及到缓冲区的处理和对象的构建。尤其是在需要频繁转换大量数字时,性能可能不如直接操作数字。

// 手动转化
string intToString(int num) {
    string result = "";
    while (num > 0) {
        result += (num % 10) + '0';  // 获取最低位并转换为字符
        num /= 10;  // 去掉最低位
    }
    reverse(result.begin(), result.end());  // 反转字符串
    return result;
}

② istringstream iss(line);

核心作用:把字符串 line 转换成一个 “字符串输入流”,让我们可以像读取 cin(键盘输入)一样,按空格分割读取里面的内容。

这里的line的内容类似为:ST CQ S8 D8 HQ D2 H3 HK H9 H2 HT SK CK

③ 字符串转数字:可以将字符串s(纯数字)的值赋值到a

string s;
int a;
cin >> s;
stringstream ss(s);
ss >> a;

※algorithm库:常用到其中的reverse()函数,来获取逆序的字符串

①reverse();

// 判断一个数是否是回文数
bool isPalindrome(int num) {
    string str = intToString(num);
    string reversed_str = str;
    reverse(reversed_str.begin(), reversed_str.end());
    return str == reversed_str;
}

②sort(all.begin(), all.end(), compareStudent)

排序函数,将数组的头下标和尾下标分别导入,可以由小到大排列(默认就是升序)

 sort(gaps.begin(), gaps.end());

如何降序排列?

降序(由大到小)sort(gaps.rbegin(), gaps.rend())rbegin()是反向起始迭代器(指向最后一个元素),rend()是反向结束迭代器,相当于反向遍历排序升序(由小到大)sort(gaps.begin(), gaps.end())begin()指向第一个元素,end()指向最后一个元素的下一位,是sort的默认排序方式(升序)

 sort(gaps.rbegin(), gaps.rend());

sort () 第三个参数的核心作用

sort(all.begin(), all.end(), compareStudent) 中:

  • 第一个参数:排序起始位置(迭代器);
  • 第二个参数:排序结束位置(迭代器);
  • 第三个参数:比较函数(决定两个元素的排序优先级),返回 bool 类型:
    • 返回 true:表示第一个参数排在第二个参数前面;
    • 返回 false:表示第二个参数排在第一个参数前面。

map<string,int> count;
map可以用来定义两个不同变量类型的二维数组,以string为下标,count[string]的值一半为该string出现的次数

遍历:要string遍历

for (int len = L; len <= n; len++) {
        for (int begin = 0; begin + len <= n; begin++) {
            string sub = s.substr(begin, len);
            int cnt = count[sub];

字符a比字符A大了32的ASCII码

C++算法刷题常用库函数 常用库: #include<iostream> #include<sstream> #include<vector> #include<string> #include<stack> #include<queue> #include<map> #include<set> #include<algorithm> 1.<iostream><sstream> 见:牛客网输入 阅读详情

相关推荐

蓝桥杯刷题周计划(第一周)

本文是我的蓝桥杯刷题周计划的第一周内容,内含25题。刷题内容主要为C++库函数、STL容器和基础算法,每道题分为题目、代码、题解分析三部分,且附有原题链接。希望能对您有帮助!

2402_88461821的博客 1万+

c++常用库函数(超级详细版)

合并函数的核心思想是设置两个头指针,分别指向两个升序数组首地址,通过比较两个头指针的大小,每次都将小的数值放入新的数组,然后小数值指针后移,最后新的数组也是有序的,从而完成合并过程,复杂度为。无序数组的包含问题就像是字符串应用中的最长公共子序列,解法是动态规划,而有序数组的包含则是简单的判断问题,解法类似有序数组的合并。,其作用是将两个集合交成一个集合,同样的要求输入的两个集合必须是有序的。,其作用是计算出两个集合的对称差集,同样的,要求输入的两个集合必须是有序的。

m0_74036487的博客 2万+

C++ 库函数(库函数 查询手册)

这是我心仪已久的一本书 我相信很多读者也有同样的感受 在所有的编程语言中 C++可以说是最为复杂的 它既是一门传统的编程语言 新的编程语言 说它是一门传统语言 是因为 C++诞生已将近 20 年的历史了 特别 年来 C++得到了快速的发展 C++是计算机软件领域中覆盖面最为广阔的编程语言 C++相关的智力投入也是其他任何一门语言所无法比拟的 人们对于 C++的研究已经 了对于一门编程语言所应有的关注 所以 现在的 C++已经非常成熟 有大量的资源 书籍 源代码等等 可供我们使用 说 C++是一门新的编程语言 是因为在 1998 年 International Standards Organization 完成了标准化 从此 C++领域有了统一的 有的编译器都将向标准靠拢 或者说 与标准兼容 这有利于我们写出可移植的 C 同时 C++标准也统一了 C++标准库 为 C++用户提供了最为基本的基础设施 C++经 的发展 终于有了一个相对稳定的版本 所以 我们应该用一种新的眼光来看待 C+ 简单地把 C++认为是 C 语言的超集 本书正是新版本 C++的写照 通过本书 你可以 C++语言 这是我翻译过程中最为真切的体会 它纠正了我过去对于 C++语言的一些 然我从 1993 年开始就一直在使用 C++ 但是直到阅读了这本书之后 我才从真正意 地认识了 C++语言

C++中常用的库函数

常用的库函数 sort 之类的函数整理

陕西师范大学 人工智能 周一卓 的博客 1万+

C++ 库函数大全手册完整版

C++ 库函数大全手册完整版,而且是chm格式带索引、搜索,用着非常方便。这本手册的内容涉及C++ 核心库函数、STL函数、C函数库、IOstream操作库、STL Containers、Strings library字符串库等常用的函数集,一查即应,放在手边,实属方便。

C++库函数查询手册

C++库函数查询手册,罗列了常用的C++函数用法,定义等

c++常用库及函数

本文整理了一些作者认为比较常用的c++库及其函数,以供各位读者参考

jia6464的博客 3244

DisplayPort 1.4数据扰码实战:16bit LFSR并行优化技巧(附Verilog代码)

本文深入探讨了DisplayPort 1.4协议中16bit数据扰码的并行化实现。针对高带宽视频传输需求,文章详细推导了16位LFSR(线性反馈移位寄存器)的单周期16步并行计算公式,并提供了可直接使用的Verilog代码,解决了传统8bit串行处理吞吐量不足的瓶颈,为高速接口设计提供了关键优化技巧。

y4z5a6b7的博客 259

【C++标准库函数总结】常用标准库函数汇总

本文对 C++ 标准库中常用的函数和类进行了详细的汇总和介绍,涵盖了输入输出、字符串处理、数学计算、容器、算法、日期和时间处理以及多线程编程等方面。这些标准库函数和类为 C++ 开发者提供了强大的工具,能够大大提高开发效率和代码质量。然而,C++ 标准库非常庞大且功能丰富,本文只是介绍了其中的一部分。在实际开发中,可以根据具体需求深入学习和运用标准库的其他功能。

byte轻骑兵的技术小窝 2248

【智能优化算法】2024年SCI鳗鱼-石斑鱼优化算法(EGO),含MathType公式、word伪代码、visio流程图、matlab代码等。

该文中包括5个内容:用MathType编辑的公式、伪代码、visio的流程图,matlab代码,PDF论文,拿来直接用,可以帮助科研者省下超多时间。 鳗鱼-石斑鱼优化算法(Eel and grouper optimizer ,EGO)是一种新型的元启发式算法(智能优化算法),灵感来源于海洋生态系统中鳗鱼和石斑鱼的共生作用和觅食策略。该成果由Ali Mohammadzadeh和Seyedali Mirjalili两位作者于2024年6月发表在SCI著名期刊《Cluster Computing》上。

2301_79359347的博客 1042

二阶系统的带宽(频域分析)

下面以典型I型系统为例,计算系统的开环截止频率和闭环截止频率。设I型系统为: 1:系统的开环截止频率为 2:系统的闭环截止频率 其实我们在工程整定时,把ζ = 0.707,也把系统的带宽近视看成自然震荡角频率即 (wb≈wc≈wnw_{b}\approx w_{c}\approx w_{n}wb​≈wc​≈wn​)对于二阶系统。 ...

wanrenqi的博客 2万+

C++ 常用库函数

参数:dest 目的缓冲区;src 源缓冲区;count 拷贝的字符个数。所需头文件功能:从 src 拷贝 count 个字节到 dest。如果源缓冲区和目的缓冲区重叠,这个函数不能保证正确拷贝;对于这种情况可使用 memmove 处理。返回值:返回 dest 的值。参数:dest 目的对象;src 源对象;count 拷贝的字符字节个数。所需头文件;功能:从 src 拷贝 count 个字节到 dest。如果源区域与目的区域有重叠, memmove 也能确保正确拷贝。

谢谢大家的关注 1424

告别密码本!用Windows NPS给华为/华三交换机做Radius认证,SSH登录更安全

本文详细介绍了如何利用Windows NPS实现华为/华三交换机的Radius认证,提升SSH登录安全性。通过集中化管理、精细化控制和完整审计追踪,企业可告别传统密码本,大幅提升网络设备管理效率。文章包含NPS服务部署指南、交换机配置详解及调试技巧,助力企业构建安全高效的统一认证体系。

weixin_42549723的博客 419

力扣刷题常用的c++库函数

2,min函数 2,sort函数 (1)第一个参数first:是要排序的数组的起始地址。(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。 sort()函数和lambda表达式 1.reverse函数可以反转一个字符串 2.反转字符数组 3.反转整型数组 4,swap函数 5,memset()函数 C 库函数 **void memset(void str,

weixin_45510561的博客 3427

【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南

【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南 一文搞懂什么是 Docker?分析容器的工作原理、容器的架构、Docker的优势、使用 Docker的原因。 全程手把手教你Docker的安装与使用,配置阿里云镜像加速、容器常用命令!

寸铁的博客 10万+

Palabos User Guide中文解读 | 第一章 | 介绍

译者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,能不能完成全本翻译再说,而且文中我也会标记我不确定的地方,以传达意思为主,翻译不当的地方还请各位读者帮忙指正。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of...

Yulan Fang's notes. 6977

C++ 算法竞赛的常用库函数

C++ 算法竞赛的常用库函数 算法竞赛赛前复习必备

Yvonne_78的博客 5525

ABB机器人绝对精度实战:从焊接路径优化到TCP控制(附配置步骤)

本文深入探讨了ABB机器人绝对精度在焊接路径优化中的核心价值。通过对比重复定位精度,阐明绝对精度如何补偿机械误差,确保TCP在整个运动路径上的轨迹精度。文章提供了从示教器激活绝对精度功能的详细配置步骤,并分享了针对焊接抖动和实现0.2mm路径精度的进阶调优技巧,包括TCP标定、伺服参数优化与系统维护。

weixin_29053073的博客 351

C++ STL 库函数大全

#include     //设定插入点 #include      //字符处理 #include      //定义错误码 #include      //浮点数处理 #include     //文件输入/输出 #include     //参数化输入/输出 #include    //数据流输入/输出 #include     //定义各种数据类型最值常量 #include

住在半山腰的螃蟹专栏 5844

Python 爬虫教程:财经新闻实时抓取(最新资讯 + 关键词提取)

在当今信息爆炸的时代,财经新闻的实时获取对于投资者、研究人员以及普通大众来说都具有重要的价值。通过 Python 爬虫技术,我们可以高效地抓取财经新闻,并提取其中的关键信息,以便更好地进行数据分析和决策支持。本文将详细介绍如何使用 Python 编写一个财经新闻实时抓取系统,并结合关键词提取技术,帮助读者快速掌握 Python 爬虫的核心技能。

yansideyucsdn的博客 1049

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c++刷题常用技巧

记录常用的好用的c++刷题技巧以及方法的库函数 技巧 库函数 技巧 库函数 此部分以头文件分类 <cctype> 功能 函数原型 判断一个字符是否是字母或者数字 int isalnum ( int c ); 判断一个字符是否是一个字母 int isalpha ( int c ); 判断一个字符是否是一个控制字符 int iscntrl ( int c ); ...

weixin_44077128的博客 1077

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【c++】cpp数学库函数、随机数和时间库函数

cpp中的数学库函数、随机数、时间库函数

hutaotaotao的博客 1800

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++库函数详解来啦!

acos(double x),asin(double x),atan(double x),atan2(double y, double x):反三角函数。- std::copy(src_first, src_last, dest_first):复制源范围内的元素到目标范围。- std::find(first, last, value):查找指定范围内第一个匹配给定值的元素。- sin(double x),cos(double x),tan(double x):三角函数。

PingdiGuo_guo的博客 2290

C++中string的库函数

为什么学习string?(1)C语言中,字符串是以 '\0 '结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数, 但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。(2)在OJ中,有关字符串的题目基本以string的形式出现,而且在常规工作中,为了简单、方便、快捷,基本都使用string,很少有人去使用C库中的字符串操作函数。string是C++标准库的重要组成部分,主要用于。

2301_79201049的博客 1723
上一篇: day2:一个月的天数、银行存款到期日、实数运算
下一篇: day3:解二次方程、门票价格计算、星期几问题
小白blog
博客等级 码龄4年 0粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值