IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> PAT乙级常用函数用法总结 -> 正文阅读

[C++知识库]PAT乙级常用函数用法总结

  1. 所有的题目利用最基本的C语言知识就可以解决,一些要用到结构体,涉及到的数据结构最多到链表,最常用的函数就是strcmp,strcpy,qsort,abs,fabs等
  2. 大数组最好设置为全局,因为main函数在栈空间内,而栈的大小只有几十KB,数组太大会出现栈溢出,因此大数组设置为全局,全局变量占用堆空间,堆空间按需分配,可大可小
  3. 对于错误,末尾的换行不影响格式,
    ? ? ? ?段错误一般是设置的数组小于题目给定的要求,
    ? ? ? ?答案错误一般就是代码逻辑有错误,
    ? ? ? ?运行超时说明题目不能用暴力破解,或者i--写成i++之类的循环体里的错误
  4. 对于测试用例,最好自己带到DEV C++或者其他编译器上面测试一下,一般能发现很多错误,方便改正

1、sort()?排序函数

bool cmp(struct node a,struct node b) {
	if ((a.de + a.cai) != (b.de + b.cai))
		return (a.de + a.cai) > (b.de + b.cai);
	else if (a.de != b.de)
		return a.de > b.de;
	else
		return a.num < b.num;
}
struct node
{
	int num, de, cai;
}v[4];
sort(v[i].begin(), v[i].end(), cmp);


2、substr()?获取子串

string s = "123456";
cout << s.substr(2, 4);
  • 输出结果:2345

3、reverse()?倒置函数

char res[10] = "abcdefghi";
reverse(begin(res), begin(res) + 4);
cout << res;
  • 输出结果:dcbaefghi

4、vector?常用操作

vector<int>  v1(n,1);//初始化一个大小为n,值全为1的数组

v1.push_back(2);//在vector末尾插入元素2
v1.pop_back();//删除vector末尾元素

v1.insert(v1.begin(),3);//在v1第一个位置前插入3
v1.insert(v1.begin()+1,4);//在v1第二个位置前插入4
v1.insert(v1.begin(),5,6);//在v1第一个位置前连续插入5个6

v1.erase(v1.begin());//删除第一个元素
v1.erase(v1.begin()+1);//删除第二个元素
v1.erase(v1.begin(),v1.begin()+3);//删除前三个元素

5、itoa()?&?atoi()?&?stoi()转换

int i = 579;
char s[10];
itoa(i, s, 8); //第三个参数为转换的进制数
cout << s;
  • itoa()输出结果:1103
char s[4] = "107";
int num = atoi(s);
cout << num;
  • atoi()输出结果:107
char s[4] = "107";
int num = stoi(s);
cout << num;
  • stoi()输出结果:107

6、isdigit()?& isalpha() & isalnum() & isupper() & islower() 判断字符是否是数字字母

char a = '7', b = 'C';
cout << isdigit(a) << " " << isdigit(b) << "\n"; //判断是否是数字
cout << isalpha(a) << " " << isalpha(b) << "\n"; //判断是否是字母
cout << isalnum(a) << " " << isalnum(b) << "\n"; //判断是否是数字或字母
cout << isupper(a) << " " << isupper(b) << "\n"; //判断是否是大写字母
cout << islower(a) << " " << islower(b) << "\n"; //判断是否是小写字母
  • 输出结果:
    4 0
    0 1
    4 1
    0 1
    0 0

7、round() 四舍五入

#define CLK_TCK 100
double t1 = 100, t2 = 149, t3 = 150;
cout << round((t2 - t1) / CLK_TCK) << " " << round((t3 - t1) / CLK_TCK);
  • 输出结果:0 1

8、toupper() & tolower() 转换大小写

char a = 'a', b = 'B';
cout << toupper(a) << " " << tolower(b);
  • 输出结果:65 98

9、string::npos?用法

string s = "abcdefg";
int idx = s.find('.');   //作为return value,表示没有匹配项
if (idx == string::npos)
    cout << "This string does not contain any period!" << endl;
idx = s.find('c');
s.replace(idx + 1, string::npos, "x");  string::npos作为长度参数,表示直到字符串结束
cout << s;
  • 输出结果:
    This string does not contain any period!
    abcx

10、upper_bound() & lower_bound() 寻找上界和下界

注意:这里返回的是地址,通过减去数组名获得下标。

upper_bound()?寻找小于指定值的界限(找到第一个大于3的位置),lower_bound()?寻找大于等于指定值的界限(找到第一个大于等于3的位置)

vector<int> nums = { 1, 2, 3, 3, 4, 4, 5 };
int index = upper_bound(nums.begin(), nums.end(), 3) - nums.begin();
cout << index << endl; // >: 4
index = lower_bound(nums.begin(), nums.end(), 3) - nums.begin();
cout << index << endl; // >: 2
  • 输出结果:4?2

11、 map用法

  1. map的遍历
    map<char, int> mp;
    char c;
    while ((c = cin.get()) != '\n') 
    	if(isalpha(c))
    		mp[c]++;
    for (map<char, int>::iterator it = mp.begin(); it != mp.end(); it++) {
    	printf("%c %d  ", it->first, it->second);
    }
    输入:
    This is a simple TEST.

    输出:

    E 1  S 1  T 3  a 1  e 1  h 1  i 3  l 1  m 1  p 1  s 3
  2. map常用操作
    begin() 返回指向 map 头部的迭代器
    clear() 删除所有元素
    count() 返回指定元素出现的次数
    empty() 如果 map 为空则返回 true
    end() 返回指向 map 末尾的迭代器
    erase() 删除一个元素
    find() 查找一个元素
    insert() 插入元素
    key_comp() 返回比较元素 key 的函数
    lower_bound() 返回键值>=给定元素的第一个位置
    max_size() 返回可以容纳的最大元素个数
    rbegin() 返回一个指向 map 尾部的逆向迭代器
    rend() 返回一个指向 map 头部的逆向迭代器
    size() 返回 map 中元素的个数
    swap() 交换两个 map
    upper_bound() 返回键值>给定元素的第一个位置
    value_comp() 返回比较元素 value 的函数
    

12、sscanf() & sprintf() 用法

  • sscanf() – 从一个字符串中读进与指定格式相符的数据
  • sprintf() – 字符串格式化命令,主要功能是把格式化的数据写入某个字符串中?
scanf("%s", str1);
sscanf(str1, "%lf", &temp);		//在str1中读取一个浮点数给temp
sprintf(str2, "%.2lf", temp);	//把temp以保留两位小数的字符串形式给str2

?输入:

aaa 
2.3.4 
1.23ab2.3

输出:

aaa 0 0.00
2.3.4 2.3 2.30
 1.23 1.23
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-27 17:12:03  更:2022-05-27 17:13:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 15:47:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码