1 #include<iostream>
2 #include<vector>
3 #include<list>
4 #include<set>
5 #include<map>
6 #include<string>
7 #include<algorithm>
8 using namespace std;
9
10 /**
11 *
12 *判断vector正反向元素是否一样
13 */
14 template<class T>
15 bool fun1(const vector<T> v) {
16 for (int i = 0; i < v.size() / 2; i++) {
17 if (v.at(i) != v.at(v.size() - i - 1)) {
18 return false;
19 }
20 else {
21 return true;
22 }
23 }
24 }
25
26 /**
27 *判断list正反向元素是否一样
28 */
29 template<class T>
30 bool fun2(const list<T> l) {
31 auto start = l.begin();
32 auto tail = l.end();
33 while (1) {
34 tail--;
35 if (start == tail) break;
36 if ((*start) != (*tail)) {
37 return false;
38 }
39 start++;
40 if (start == tail) break;
41 }
42 return true;
43 }
44
45
46 template<class T>
47 void test1(const vector<T>& v) {
48 cout << fun1(v) << endl;
49 }
50
51 template<class T>
52 void test2(const list<T> l) {
53 cout << fun2(l) << endl;
54 }
55
56
57 template<class T>
58 void test3(vector<T>& v) {
59
60 int n;
61 cin >> n;
62 T temp;
63 for (int i = 0; i < n; i++) {
64 cin >> temp;
65 v.push_back(temp);
66 }
67 cout << "Before sort ! " << endl;
68 for (auto i : v) {
69 cout << i << ' ';
70 }
71 sort(v.begin(), v.end());
72 cout << endl << "After sort ! " << endl;
73 for (auto i : v) {
74 cout << i << ' ';
75 }
76 cout << endl << "Please input a number you want to search : ";
77 auto ite = v.begin();
78 while (cin >> n) {
79 if ((ite = find(v.begin(), v.end(), n)) != v.end()) {
80 cout << *ite; /*****/
81 }
82 else {
83 cout << "No find!";
84 }
85 cout << endl << "Please input a number you want to search : ";
86 }
87 }
88
89
90 /**
91 *求两个集合的交集
92 */
93 void test4() {
94 set<int> s1 = { 9,5,6,3,2,1,8,4,7,1,5,2,4,6,5,4,7,8,5,9,6,4,2 };
95 set<int> s2 = { 1,0,10,5,6,4,3,2,8,7,9,100,5,8, 5,8,5,5,8,25, };
96 set<int> s3;
97 cout << "s1 : ";
98 for (auto ele : s1) {
99 cout << ele << ' ';
100 }
101 cout << endl << "s2 : ";
102 for (auto ele : s2) {
103 cout << ele << ' ';
104 }
105 cout << endl;
106 for (auto ele : s1) {
107 if (s2.find(ele) != s2.end()) {
108 s3.insert(ele);
109 }
110 }
111 cout << endl << "s3 : ";
112 for (auto ele : s3) {
113 cout << ele << ' ';
114 }
115 }
116
117 /**
118 *测试map类
119 */
120 void test5() {
121 map<string, string> m;
122 m.insert(pair<string, string>("zero", "零"));
123 m.insert(pair<string, string>("one", "壹"));
124 m.insert(pair<string, string>("two", "贰"));
125 m.insert(pair<string, string>("three", "叁"));
126 m.insert(pair<string, string>("four", "肆"));
127 m.insert(pair<string, string>("five", "伍"));
128 m.insert(pair<string, string>("six", "陆"));
129 m.insert(pair<string, string>("seven", "柒"));
130 m.insert(pair<string, string>("eight", "捌"));
131 m.insert(pair<string, string>("nine", "玖"));
132 m.insert(pair<string, string>("ten", "拾"));
133 string key;
134 pair<string, string> a;
135 while (cin >> key) {
136 if (m.find(key) != m.end()) {
137 a = *(m.find(key));
138 cout << a.second << endl;
139 }
140 else {
141 cout << "No find!" << endl;
142 }
143 }
144 }
145
146
147
148 /**
149 *计算一个文章中某个单词出现的频率
150 */
151 void test6() {
152 map<string, int> m;
153 pair<string, int> a;
154 pair<std::map<string, string>::iterator, bool> judge;
155 vector<string> v;
156 string temp;
157 int num = 0;
158 while (cin >> temp) {
159 a.first = temp;
160 a.second = 0;
161 m.insert(a);
162 v.push_back(temp);
163 }
164 cin.clear();
165 for (auto ele : v) {
166 m[ele]++;
167 }
168 cout << "Please input the word you want to see : ";
169 while (cin >> temp) {
170 cout << m[temp];
171 cout << "Please input the word you want to see : ";
172 }
173 }
174
175 int main() {
176 int a[10] = { 1,2,3,4,5,6 };
177 vector<int> v(a, a + 10);
178 vector<int> vv;
179 list<int> l;
180 l.assign(a, a + 10);
181 //test1(v);
182 //test2(l);
183 //test3(vv);
184 //test4();
185 //test5();
186 test6();
187
188 }