C++ STL萌新第一次学
程序员文章站
2022-07-12 14:37:14
...
由于CCF认证考试迫在眉急,赶快开始学习STL以应对考试,希望能获得200+,希望希望。
在B站找到的视频归纳
库函数的认识
algorithm翻译:算法
一个STL中很重要的库函数
sort
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[] = { 1, -3, 5, 64, 2, 14, 0 };
sort(a, a + 7);
for (int i = 0; i < 7; i++)
cout << a[i] << ' ';
cout << endl;
return 0;
}
string
C中的char*进行封装为stl的C++有string
/*C语言*/
char ch[] = "zifuchuan";
for (int i = 0; ch[i] != '\0'; i++)
cout << *(ch + i);
/*C++语言*/
string ch = "zifuchuan";
cout << ch << endl;
getline(cin, str)
/*C语言*/
char ch[100];
scanf("%s", ch); // 仅获取一个单词,以空格结束
printf("%s", ch);
/*C++语言*/
string s;
getline(cin, s);
cout << s << endl;
+=介绍
+=对于字符串、字符有效,数字会转为ASCII码
string s;
s += "hello";
s += ' world';
s += 10; // 10对应的ASCII是换行
s += '4';
int a = 5; // 想把a添加到字符串中
// s += a; ×
s += (a += '0');
cout << s;
/* 输出结果应该是
hello world
45
*/
排序(通过algorithm)
// begin是头迭代器,end是尾迭代器
string s = "5932871064";
cout << *s.begin() << endl; // 从第一个开始排序
cout << *--s.end() << endl; // 从最后一个4的后一个开始排序,所以进行自减操作
sort(s.begin(), s.end());
cout << s << endl;
/*
5
4
0123456789
*/
erase函数
string s = "5932871064";
s.erase(s.begin());
s.erase(--s.end());
cout << s << endl;
/*输出s是93287106*/
substr函数
string s = "5932871064";
s = s.substr(1, 3); // 取932,取索引为1,往后截断3个
s = s.substr(5, -1); // 索引为1,截断到最后
cout << s << endl;
/* 假如两种情况是孤立的,那么输出结果分别是
932
71064
*/
循环方式(4种)
1.for循环
for (int i = 0; i < s.length(); i++) cout << s[i];
2.迭代器
// 这里用了迭代器,而且前面标注是string类型的迭代器。这里的it是一个变量,类似python的each
for (string::iterator it = s.begin(); it != s.end(); it++) cout << *it;
3.迭代器化简
// auto可以代替任何一种类型的迭代器
for (auto it = s.begin(); it != s.end(); it++) cout << *it;
4.利用C++11新特性for循环
for (auto a : s) cout << a;
上一篇: stl中map的key可以重复吗?
下一篇: STL-队列queue(代码举例)