关于C++的STL以及一些容器

本文介绍了C++STL中的几个常用函数,如sort、reverse、is_sorted、atoi、nth_element等,以及它们在数组和vector容器中的应用。作者还预告了后续将讨论vector容器和更深入的STL功能。
摘要由CSDN通过智能技术生成

每一个点开我的文章的小伙伴大家好!

在发这篇文章的时候,我是一名大二的学生,我将在博客记载我的学习之路!

这是我的第十三篇博客文章,这是关于C++的STL的文章,主要介绍一些竞赛常用的容器和STL函数

        前言:最近更新文章比较少,因为我在学习后端开发的一些知识,比如说Spring、Springboot、Maven等基于JAVA语言的框架,学习了一些进阶算法,比如回溯算法、动态规划等算法思想。我打算开一个栏目专门讲讲算法思想和竞赛函数,希望如果有志同道合的C++友们能和我交流交流!

STL常用函数总结(欢迎补充):

  1. sort() :快速排序

        sort(起始地址,末尾地址,cmp);

        其中的cmp可以不写,默认按升序排列,也可以自己写一个bool类型的函数,实现自己想要的排序方式

其中降序的bool类型函数可以这么写:

bool cmp(int a,int b)
{
	return a>b;
}

Sort常用于对数组和vector容器进行排列,至于什么是vector容器我以后的文章会介绍,大家也可以自己去找找资料了解了解。

#include<iostream>
#include<vector>
using namespace std;

bool cmp(int a,int b)
{
	return a>b;
}

int main()
{

	//sort(起始地址,末尾地址,cmp)
	int b[10] = { 2,3,1,4,5,19,74,51,46,0 };
	vector<int>va;
	va.push_back(3);
	va.push_back(2);
	va.push_back(1);
	va.push_back(4);
	va.push_back(12);
	va.push_back(33);
	va.push_back(31);
	va.push_back(13);

	sort(b, b + 10,cmp);

	for (int i=0;i<10;i++)
		cout << b[i]<<" ";
	cout << endl;

	sort(va.begin(), va.end());
	for (auto i : va)
		cout << i <<" ";
	cout << endl;

	for (int i = 0; i < va.size(); i++)
		cout << va[i] << " ";
}

运行结果:

 

 2、reverse():逆置

reverse(起始地址,结束地址)

reverse常用于对数组和vector容器进行排列

就用上面的数组和容器为例:

reverse(b, b + 10);

	for (int i = 0; i < 10; i++)
		cout << b[i] << " ";
	cout << endl;

	
reverse(va.begin(), va.end());
	for (int i = 0; i < va.size(); i++)
		cout << va[i] << " ";

3、is_sort()

is_sort(起始地址,末尾地址)  判断这个序列是不是升序的

函数返回一个bool类型的值    这里对数组b判断

if (is_sorted(b, b + 10))
		cout << "该数组升序" << endl;
	else cout << "该数组不为升序" << endl;

4、atoi(const char*)  将字符串转换为int类型

注意参数为char型数组,如果需要将string类型转换为int类型,可以使用stoi函数或者将string类型转换为const char *类型。

char a[] = "123456789";
	string s = "1234567";
	int c = atoi(a);
	int d = atoi(s.c_str());
	cout << "char数组转化为int型:" << c <<endl<<"string型转为int型:" << d << endl;

5、nth_element(beg,nth,end)  

寻找序列第n小的值   nth为迭代器   执行这个函数之后,该序列会被由小到大排序

int g[7] = { 2,6,1,41,23,65,7 };
	cout << "原来g数组中的顺序为:" << endl;
	for (auto i : g)
		cout << i << " ";
	cout << endl;
	nth_element(g, g + 2, g + 7);
	cout << "g数组中第3小的元素为:" << g[2] << endl;
	cout << "执行nth_element函数后的g数组顺序为:" << endl;
	for (auto i : g)
		cout << i << " ";

6、stoll()字符串转整型  long long  int型 ,字符串内是数字

string str1 = "1231423214124";
	auto n = stoll(str1);
	cout << n<<endl;

7、stoi(str,起始位置,n进制)  将n进制的字符串转化为10进制

string str2 = "10011";
	int s2 = stoi(str2,0,2);
	cout << "字符串str2中的二进制内容转为十进制为:" << s2 << endl;

	//按十进制转换为其他进制
	cout << "300的八进制:" << oct << 300 << endl;
	cout << "300的十进制:" << dec << 300 << endl;
	cout << "300的十六进制:" << hex << 300 << endl;
	cout << "300的二进制:" << bitset<8>(300) << endl;  //<8>表示保留8位输出  一般用于事先知道转为2进制后的位数

8、_itoa()函数  将一个十进制数转换为2-36进制的字符串

格式  _itoa(num,str,m);  num是一个int型的,是要转化的十进制数,str是转换的结果,m是目标进制

int num = 10;
	char str3[100];
	_itoa_s(num, str3, 2);
	cout << "num转化为2进制后:" << str3 << endl;

今天就先分享这8个函数(明天考试,时间有限)

对下一期做个预告:

会接着分享stl函数,会介绍vector容器还有它的一些基本用法和进阶用法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值