ACM选修第一节内容整理 3.5

万能头文件: #include<bits/stdc++.h> Using namespace std; 栈(stack) 先进后出(First In Last Out, FILO) #include<stack> using namespace std; int main() { stack<int> s; s.push(1); //向栈压入一个元素1. s.push(2); s.push(3); cout << "Top: " << s.top() << endl; //返回栈顶元素值。 cout << "Size: " << s.size() << endl; //返回栈内元素个数。 s.pop(); //移除栈顶元素。 cout << "Size: " << s.size() << endl; if(s.empty())//返回bool型 判断栈内是否为空。 { cout << "Is empty" << endl; } else { cout << "Is not empty" << endl; } return 0; } 队列(queue) 先进先出(First In First Out, FIFO) 从底端加入元素,从顶端取出元素 #include <iostream> #include <algorithm> #include <vector> using namespace std; int main(){ vector<int> a; for (int i = 0; i < 5; ++i){ a.push_back(5 - i); } cout << "Size: " << a.size() << endl; a.pop_back();//删除尾部元素。 a[0] = 1; cout << "Size: " << a.size() << endl; for (int i = 0; i < (int)a.size(); ++i){ cout << a[i] << ", " << endl; } cout << endl; return 0; } sort 排序函数 默认升序排列 #include <algorithm> #include <vector> #include <iostream> using namespace std; int main() { int a[10]; vector <int> b; for(int i=0;i<5;i++) { cin>>a[i]; b.push_back(a[i]); } sort(a,a+5);//此处范围为前开后闭 sort(b.begin(),b.end()); for(int i=0;i<5;i++) cout<<a[i]<<" "; cout<<endl; for(int i=0;i<5;i++) cout<<b[i]<<" "; return 0; }

降序排列方法:

bool cmp(int a, int b) { return a > b; } sort(num, num + 5, cmp); //三个变量,最后一个变量为自定义函数。 upper_bound 和 lower_bound 计算有序队列中相同元素的个数 upper_bound(begin, end, value); //返回>value的元素的第一个位置。 lower_bound(begin, end, value); //返回>=value的元素的第一个位置。 num[] = {1,2,2,3,4,5}; lower_bound(num, num + 6, 2)为num + 1 upper_bound(num, num + 6, 2)为num + 3 set 和 multiset 根据特定排列准则,自动将元素排列。 set不允许元素重复。