C++ STL常用函数

记一些写题时常见常用方便好用C++函数
——————保持更新——————
↓可收藏 【提供目录方便大家查找使用】

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;	    //整型对字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值