记一些写题时常见常用方便好用的C++函数
——————保持更新——————
↓可收藏 【提供目录方便大家查找使用】
【C++STL常用函数】
1. vector 数组
头文件
#include <vector>
优点:
1.不会被限制长度
2.可以用下标访问
3.可以动态改变长度
头文件:
#include
vector a(10)
(类型:整型 数组名:a 数组容量:10)
以下操作的vector数组,都以a命名。
常用操作:
① 输入数据方式:
a.用数组下标方式【此时需要创建数组时就定义数组长度】
vector <int> a(10);
for(int i = 0 ; i < 10 ; i++)
scanf("%d",&a[i]);
b.用链表方式【此时创建数组时可以不用定义数组长度】
vector <int> b;
for(int i = 0 ; i < 10 ; i++)
{
int temp;
cin >> temp;
b.push_back (temp) ;
}
② 查看数组元素个数
a.size();
③ 清空数组
a.clear();
④ 查看数组是否为空
a.empty();
⑤ 数组首元素下标
a.begin();
⑥ 数组最后一个元素的下一个元素下标
a.end();
⑦ 删除数组某下标所在位置的值
a.erase(index); //index为下标
⑧ 往数组后面添加元素
a.push_back(element); //element为要添加的
⑨ 删除数组的最后一个元素
a.pop_back();
2. string 字符串
**头文件
#include <string.h> 或 #include <cstring>**
常见操作
① 创建一个string字符串
string str= "abcd"
char str[] = "abcd";
string str; //没设初始值
② 获取字符串的长度/大小
str.length();
str.size();
③ 在字符串中插入字符或字符串
str.insert(2,"abc");//在下标值为2处插入字符串abc,注意是插入而不是替换。
④ 拼接字符串
str.append(str1); //把str1拼接到str后面
str += str2; //把str2拼接到str后面
str += 'abc'; //把abc拼接到str后面
⑤ 字符串长度的比较
str.compare(str1); //将str和str1进行比较
//如果str比str1长,则返回大于0的值
//相等则返回0
//如果str比str1短,则返回小于0的值
更详细用法:C++中的Compare()函数
⑥ 如果要用printf打印string类型字符串
printf("%s",str.c_str()) //注意此处用的是%s
3.algorithm 算法函数
头文件
#include < algorithm >
① sort() 快速排序
a.面对数组:
[升序排序]
sort(a,a+n) //a为排序开始指针,a+n为排序结束指针
[降序排序]
需要自己编写一个cmp函数来告诉sort函数:需要的是降序排序
bool cmp(int a,int b)
{
return a>b;
}
sort(a,a+n,cmp);
b.面对结构体
面对结构体时,一定要写比较函数
//先定义一个结构体
struct node{
int x;
int y;
}a[105];
//从小到大排列用<,从大到小用>)
bool cmp(node a,node b)
{
if(a.y==b.y) //如果两个结构体的y相同,按它们的x值从小到大排列
return a.x<b.x;
else
return a.y<b.y; // 反之按y从小到大排列
}
sort(a,a+n,cmp);
② reverse() 逆序函数
会将区间内的元素全部逆序。
用于反转在 [ first,last) 范围内的顺序,包括first,但不包括last
reverse函数没有返回值
a.面对vector容器
vector< int > v = {1,2,3}
reverse ( v.begin() , v.end() );
//逆序后 v={3,2,1}
b.面对string类字符串
string str="abcd";
reverse ( str.begin() , str.end() );
//逆序后的结果是 str="dcba"
c.面对int类型数组
int a[3] = {1,2,3};
reverse( a,a+3 );
//逆序后的结果是 a = {3,2,1}
② fill() 赋值函数
a.面对数组
用法:fill(a,a+n,要赋值的数);
int a[5]
fill ( a,a+5,2 )
//数组a所有的元素都赋值为2
b.面对vector容器
用法:fill ( vector.begin(), vector.end(), val );
vector<int> b(8); // 此时b : 0 0 0 0 0 0 0 0
fill (b.begin(),b.begin()+4 , 5);
//赋值后 b : 5 5 5 5 0 0 0 0
③ map()函数
提供一对一的容器(可以指定多种类型)
头文件
#include <map>
map()函数的构造函数
map<string , int >m; //字符串对整型
map<int ,string >m; //整型对字符串
map<sring, char>m; //字符串对字符
map< char ,string>m; //字符对字符串
map<char ,int>m; //字符对整型
map<int ,char >m; //整型对字符