stl函数的运用实例(二)
#define _CRT_SECURE_NO_WARNINGS #include#include using namespace std; //队列(没有迭代器) /* void main() { queue q; q.push(78); q.push(18); q.push(20); q.push(33); //q.front(); //q.back(); while (!q.empty()) { int tmp = q.front(); cout << tmp << endl; q.pop(); } system("pause"); } */ //优先级队列 /* #include void main() { //默认 最大值优先级 priority_queue pq1; pq1.push(12); pq1.push(3); pq1.push(40); pq1.push(15); while (!pq1.empty()) { int tmp = pq1.top(); cout << tmp << endl; pq1.pop(); } cout << "----------" << endl; //最小值优先级队列 priority_queue ,greater > pq2; pq2.push(12); pq2.push(3); pq2.push(40); pq2.push(15); while (!pq2.empty()) { int tmp = pq2.top(); cout << tmp << endl; pq2.pop(); } system("pause"); } */ //栈 /* #include void main() { stack s; for (int i = 0; i < 10; i++) { s.push(i+1); } while (!s.empty()) { int tmp = s.top(); cout << tmp << endl; s.pop(); } system("pause"); } */ //list #include void printList(list
& lst) { //迭代器 //没有重载“<”运算符 for (list ::iterator it = lst.begin(); it != lst.end(); it++) { cout << *it << endl; } } //基本操作 /* void main() { list lst; for (int i = 0; i < 10; i++) { //尾部插入元素 lst.push_back(i); } //头部插入元素 lst.push_front(80); lst.push_front(90); list ::iterator it = lst.begin(); it++; cout << *it << endl; //it = it + 3; 注意:不支持随机访问 printList(lst); system("pause"); } */ //删除 /* void main() { list lst; for (int i = 0; i < 10; i++) { //尾部插入元素 lst.push_back(i); } list ::iterator it = lst.begin(); //删除 it++; //删除第二个元素 //lst.erase(it); //删除区间(已经被删除了元素不能再删除) list ::iterator it_begin = lst.begin(); list ::iterator it_end = lst.begin(); it_end++; it_end++; it_end++; lst.erase(it_begin, it_end); //直接根据内容删除元素 lst.remove(5); printList(lst); system("pause"); } */ //list插入(应用:频繁的修改) //vector(应用:随机访问v[100]) /* void main() { list lst; for (int i = 0; i < 10; i++) { //尾部插入元素 lst.push_back(i); } list ::iterator it = lst.begin(); it++; lst.insert(it, 100); printList(lst); system("pause"); } */ //set 元素唯一 默认从小到大 #include void printSet(set &s) { for (set ::iterator it = s.begin(); it != s.end(); it++) { cout << *it << endl; } } /* void main() { set s; //添加元素 for (int i = 0; i < 10; i++) { s.insert(i+1); } s.insert(20); s.insert(15); s.insert(15); //删除 set ::iterator it = s.begin(); it++; s.erase(it); printSet(s); system("pause"); } */ //元素按照从大到小排列 /* #include void main() { //同Java中:Map<> > set<> > s; s.insert(10); s.insert(5); s.insert(20); s.insert(99); for (set<> >::iterator it = s.begin(); it != s.end(); it++) { cout << *it << endl; } system("pause"); } */ //元素类型为Teacher对象,按照年龄排序 /* class Teacher { public: Teacher(char* name, int age) { this->name = name; this->age = age; } void print() { cout << name << "," << age << endl; } public: char* name; int age; }; //自定义排序规则 //仿函数 struct MyAgeSorter { bool operator()(const Teacher &left, const Teacher &right) { return left.age < right.age; } }; void main() { set s; s.insert(Teacher("jack",18)); s.insert(Teacher("rose", 20)); s.insert(Teacher("jason", 22)); s.insert(Teacher("alan", 5)); //s.insert(Teacher("jimy", 5)); //不会插入 for (set ::iterator it = s.begin(); it != s.end(); it++) { cout << (*it).name << "," << (*it).age << endl; } system("pause"); } */ //set查找 /* void main() { set s; //添加元素 for (int i = 0; i < 10; i++) { s.insert(i + 1); } //printSet(s); //等于4的元素指针 set ::iterator s_4 = s.lower_bound(4); //cout << *s_4 << endl; //大于4的元素指针 set ::iterator s_5 = s.upper_bound(4); //cout << *s_5 << endl; //一次性获取等于4的元素指针,和大于4的元素指针\ //BasicNameValuePair pair<> ::iterator, set ::iterator> p = s.equal_range(4); cout << *p.first << endl; cout << *p.second << endl; system("pause"); } */ //multiset 允许重复的元素 /* void main() { multiset s; s.insert(2); s.insert(8); s.insert(2); s.insert(8); for (multiset ::iterator it = s.begin(); it != s.end(); it++) { cout << *it << endl; } system("pause"); } */ //map添加元素的方式 #include