C++在竞赛上用的很多,它运行效率很高,并且不乏一些实用的标准库,这一章就来讲讲C++中竞赛常用的“特性”。
STL
由于这方面内容很多,只列出部分常用的内容。
向量,可将其简单理解为动态数组,元素按顺序存储于其中。向量用的比较多,故详细讲解,其它容器的常用成员方法也大都和向量类似。用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include <vector> // 头文件 using namespace std;
int main(){ vector<int> v1; vector<int> v2(10); vector<int> v3(10,0); v1.push_back(10); v3.pop_back(); v2[2]; v1.clear(); v1.empty(); v2.size(); v1.begin(); v1.end(); return 0; }
|
集合,需要 #include <set>
, 无序存储,无重复元素,并且没有 push_back()
方法,使用 insert()
来添加元素。
栈,需要 #include <stack>
,使用 top()
来获取栈顶元素,push()
入栈, pop()
出栈。
队列,需要 #include <queue>
,使用 front()
和 back()
来获取队首、队尾元素,push_back()
和 pop_front()
实现入队、出队。
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <map> #include <string> #include <iostream> using namespace std; int main(){ map<int, string> mapStudent; mapStudent.insert(pair<int, string>(1, "student_one")); mapStudent.insert(pair<int, string>(2, "student_two")); mapStudent[3]="student_three"; cout<<mapStudent[4]<<endl; map<int, string>::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout<<iter->first<<' '<<iter->second<<endl; return 0; }
|
sort()
引用
题目