C++学习笔记(四)之 STL
来源:互联网 发布:用代理不能上公司淘宝 编辑:程序博客网 时间:2024/06/06 18:18
1、映射
map(映射),multimap(多映射)----------存取一对数据
红黑树(数据结构)
基本操作:
insert:4种方法,count和find,
erase:3种方法。
不能通过find进行修改
demo:
#include<iostream>#include<map>using namespace std;int main(){map<int, string> a;multimap<int, string>am;a.insert(map<int, string>::value_type(1, "one"));//key键,value值a.insert(map<int, string>::value_type(2, "two"));a.insert(map<int, string>::value_type(3, "three"));a.insert(make_pair(-1, "minus one"));a.insert(pair<int,string>(1000, " one thousand"));a[100000] = "one miu";cout << "最简单的查找:" << endl;//cout <<a[]<< endl;cout << "map里共有:" << a.size() << "对键值对数据" << endl;cout << "Data is:" << endl;map<int, string>::iterator iter = a.begin();for (; iter != a.end(); ++iter){cout << "Key:" << iter->first;cout << " Value:" << iter->second.c_str() << endl;}am.insert(multimap<int, string>::value_type(3, "Three"));am.insert(multimap<int, string>::value_type(21, "fou five"));am.insert(make_pair(11, "six Four"));am.insert(pair<int, string>(66, "Seven Tex"));am.insert(pair<int, string>(66, "Eight Nine"));cout << "multimap里共有:" << am.size() << "对键值对数据" << endl;cout << "Data is:" << endl;map<int, string>::iterator iter1 = am.begin();for (; iter1 != am.end(); ++iter1){cout << "Key:" << iter1->first;cout << " Value:" << iter1->second.c_str() << endl;}cout << "multimap有" << am.count(66) << "个66" << endl;multimap<int, string>::const_iterator fi;fi = am.find(66);if (fi != am.end()){cout << "Find it:" << endl;size_t n = am.count(66);for (size_t i = 0; i < n; i++){cout<<fi->first << "=" << fi->second.c_str() << endl;fi++;}}elsecout << "No Find!" << endl;if (a.erase(-1)>0)cout << endl << "delete success!" << endl;multimap<int, string>::iterator p = am.find(66);if (p != am.end()){am.erase(p);cout << "delete 66 success!" << endl;}am.erase(am.lower_bound(180), am.upper_bound(1000));system("pause");return 0;}
队列queue FIFO先进先出 双端操作只能用list、deque而不能用vector作队列(容器适配器不是原始的)
#include<iostream>#include<queue>#include<list>#include<deque>using namespace std;int main(){queue<int, list<int>> a;queue<int, deque<int>> b;queue<int> c;c.push(1);//压入数据c.push(2);c.push(3);c.push(4);c.push(5);c.push(6);cout << "队列里的数据:" << c.size() << endl;cout << "对首data:" << c.front() << endl;cout << "队尾数据;" << c.back() << endl;c.pop();//对首删除cout << "对首data:" << c.front() << endl;while (c.size()){cout << c.front() << " ";c.pop();}if (c.empty())cout << "队列为空" << endl;system("pause");return 0;}
3、set
set(不重复)/multiset(可重复)
红黑树(数据结构)
基本操作:insert、count和find、erase不能通过find进行修改
demo:
#include<iostream>#include<set>using namespace std;template<typename T>void PrintC(T& a){T::iterator i = a.begin();cout << "Imshow Data:"<<endl;while (i != a.end()){cout << *i++ << endl;}}int main(){set<int> a;a.insert(60);a.insert(160);a.insert(6);a.insert(-1);a.insert(0);multiset<int>ma;ma.insert(a.begin(),a.end());ma.insert(60);PrintC(a);//cout << "imshow:" << endl;//set<int>::iterator i = a.begin();//for (; i != a.end();)//cout << *i++ << endl;//cout << "a中有几个60:" << a.count(60) << endl;//要么1要么0//cout << "imshow:" << endl;/*multiset<int>::iterator i1 = ma.begin();for (; i1 != ma.end();)cout << *i1++ << endl;cout << "ma中有几个60:" << ma.count(60) << endl;*/cout << endl << endl;ma.insert(-60);ma.insert(-60);ma.insert(-60);int num;cout << "要删除的数:";cin >> num;ma.erase(num);//全部删完PrintC(ma);set<int>::iterator f = a.find(-1);//返回值为迭代器if (f != a.end())cout << "Find it:" << *f << endl;system("pause");return 0;}4、栈
LIFO后进先出单端操作可以用list、deque、vector做栈
#include<iostream>#include<stack>#include<vector>#include<list>using namespace std;int main(){stack<int, deque<int>> a;stack<int, vector<int>> b;stack<int, list<int>> c;stack<int>d;d.push(25);d.push(10);d.push(1);d.push(5);cout << "How much data:" << d.size() << endl;while (d.size()){//每top一个pop一下接着取以下元素int x = d.top();//cheak datad.pop();//deletecout << x << endl;}cout << "还有多少:" << d.size() << endl;system("pause");return 0;}
5、STL算法
0 0
- C++学习笔记(四)之 STL
- STL学习笔记之 (四)容器 list
- C语言学习入们到精通之学习笔记(四)
- C++STL学习笔记
- C++STL学习笔记
- IOS之Objective-C学习笔记(四)
- IOS之Objective-C学习笔记(四)
- c 学习笔记之四 指针
- 《STL源码剖析》学习笔记之四——序列式容器(deque之一)
- 【C/C++】STL学习笔记
- STL之学习笔记
- STL学习笔记(四):仿函数(functor)
- STL学习笔记之 (一)模版
- STL学习笔记之STL介绍(上)
- STL学习笔记之STL介绍(中)
- STL学习笔记之STL介绍(下)
- c学习笔记<四>
- C++—STL学习笔记
- mmap文件映射相关代码
- phantomjs设置截图大小
- HDU
- Android Java 并发程序系列
- iOS xcode "XXXXX.h couldn't be opened because there is no such file"
- C++学习笔记(四)之 STL
- Java 面试准备系列-4 线程池
- LeetCode算法题目:Permutations
- Caffe源码解读:lrn_layer层原理
- 高速缓存DNS2
- 第八届山东省省赛总结
- Python3跳过第一行快速读取文件内容
- ContentProvider--实现在本地获取音乐显示在ListView
- Javascript异步编程的4种方法