STL 常用方法
Posted harrytsz520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL 常用方法相关的知识,希望对你有一定的参考价值。
1. 选择 C++ 刷算法的理由
- 1、C++ 速度快(C 不是更快吗,Java 太慢了)
- 2、C++ 有 STL(什么是 STL)——性能强大,使用方便的标准库
- 3、如何使用 STL 进行高效刷算法
- 4、好处:刷算法,学习成本低
- 5、如何从 C 到 C++(仅基础语法到刷算法程度)
俗话说:磨刀不误砍柴工,不会 C++ 仍然可以刷算法,但是效率相对很低。在 ACM 或各类程序算法竞赛中相比于 Java 代码的冗长,C 的繁琐,Python 的性能低下,C++ 以兼顾简洁和高效脱颖而出。
2. 输入输出
C++ 保留了 C 的 scanf 和 printf,额外增加了 cin 和 cout。
Example:
2.1 C 程序中的输入输出
int a;
scanf("%d", &a);
printf("%d", a);
2.2 C++ 程序中的输入输出
int a;
cin >> a;
cout << a;
2.3 C++ 程序中的连续输入输出
int a, b, c;
cin >> a >> b >> c;
cout << a << b << c;
2.4 C++ 优雅地换行
cout << 1;
cout << endl;
cout << 2;
cout << 3 << endl << endl;
Notice: cin、cout 使用虽然很方便,但是比 scanf、printf 效率慢太多,算法竞赛中常常会因为使用了 cin、cout 而导致 TLE 等情况,在输入输出的数据量(> 1000)甚至更多的时候,使用 scanf、printf 代替 cin、out 通常是一种更好的选择。
3. STL 与 algorithm 头文件
STL 是“容器”的集合,这些“容器”中常见的有 list, vector, set, map等,STL 同时也是算法和其他一些组件的集合。
algorithm 是对容器继承的一些算法函数,可以更方便高效的编写程序,例如 sort 函数。
概念: 迭代器可以理解为指针。
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
vector<int> arr{1, 9, 2, 8, 3, 7, 4, 6, 5}; // 列表初始化
sort(arr.begin(), arr.end());
for(vector<int>::iterator it = arr.begin(); it != arr.end(); it++){
cout << *it << endl; // 使用 * 访问迭代器指向的元素
}
return 0;
}
有关迭代器的具体应用我会在另外一篇博文中详细说明。
4. STL の string
概念:相当于 char* 的封装,理解为字符串
4.1 简单使用
/**C中定义字符串以及打印*/
char *ch="asdkajbf";
for(int i=0;ch[i]!='