
1 // STL应用.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <iostream> 6 #include <list> 7 #include <vector> 8 #include <map> 9 #include <set> 10 #include <numeric> 11 #include <algorithm> 12 #include <string> 13 14 15 using namespace std; 16 //List将元素按顺序储存在链表中.与 向量(vectors)相比, 17 //它允许快速的插入和删除,但是随机访问却比较慢. 18 19 /* 20 list对象函数 21 assign() 给list赋值 22 back() 返回最后一个元素 23 begin() 返回指向第一个元素的迭代器 24 clear() 删除所有元素 25 empty() 如果list是空的则返回true 26 end() 返回末尾的迭代器 27 erase() 删除一个元素 28 front() 返回第一个元素 29 get_allocator() 返回list的配置器 30 insert() 插入一个元素到list中 31 max_size() 返回list能容纳的最大元素数量 32 merge() 合并两个list 33 pop_back() 删除最后一个元素 34 pop_front() 删除第一个元素 35 push_back() 在list的末尾添加一个元素 36 push_front() 在list的头部添加一个元素 37 rbegin() 返回指向第一个元素的逆向迭代器 38 remove() 从list删除元素 39 remove_if() 按指定条件删除元素 40 rend() 指向list末尾的逆向迭代器 41 resize() 改变list的大小 42 reverse() 把list的元素倒转 43 size() 返回list中的元素个数 44 sort() 给list排序 45 splice() 合并两个list 46 swap() 交换两个list 47 unique() 删除list中重复的元素 48 */ 49 50 /* 51 1.push_back 在数组的最后添加一个数据 52 2.pop_back 去掉数组的最后一个数据 53 3.at 得到编号位置的数据 54 4.begin 得到数组头的指针 55 5.end 得到数组的最后一个单元+1的指针 56 6.front 得到数组头的引用 57 7.back 得到数组的最后一个单元的引用 58 8.max_size 得到vector最大可以是多大 59 9.capacity 当前vector分配的大小 60 10.size 当前使用数据的大小 61 11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值 62 v.resize(2*v.size, 99) 将v的容量翻倍(并把新元素的值初始化为99) 63 12.reserve 改变当前vecotr所分配空间的大小 64 13.erase 删除指针指向的数据项 65 14.clear 清空当前的vector 66 15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1) 67 16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1) 68 17.empty 判断vector是否为空 69 18.swap 与另一个vector交换数据*/ 70 //创建一个list容器 里面的数据类型为int 71 typedef list<int> INT_LIST; 72 //创建一个list容器 里面的数据类型为char 73 typedef list<char> CHAR_LIST; 74 75 76 void MyList() 77 { 78 INT_LIST List; 79 //声明i为迭代器 80 INT_LIST::iterator i; 81 82 //从前面添加数据 83 List.push_front(10); 84 List.push_front(1); 85 86 //从后面添加数据 87 List.push_back(5); 88 List.push_back(6); 89 90 // 从前往后显示数据 91 for (i = List.begin(); i != List.end(); ++i) 92 { 93 cout << *i << " "; 94 } 95 cout << endl; 96 97 //从后向前显示数据 98 INT_LIST::reverse_iterator j; 99 for (j = List.rbegin(); j != List.rend(); ++j) 100 { 101 cout << *j << " ";; 102 } 103 cout << endl; 104 105 //使用STL中的累加算法 106 _LONGLONG Temp = accumulate(List.begin(), List.end(), 0); 107 cout << Temp << endl; 108 109 //-------------------------- 110 //用list容器处理字符型数据 111 //-------------------------- 112 113 CHAR_LIST CList; 114 CHAR_LIST::iterator m; 115 //从前面添加数据 116 CList.push_front('A'); 117 CList.push_front('B'); 118 119 //从后面添加数据 120 CList.push_back('x'); 121 CList.push_back('y'); 122 123 // 从前往后显示数据 124 for (m = CList.begin(); m != CList.end(); ++m) 125 { 126 cout << *m << " "; 127 } 128 cout << endl; 129 130 //从后向前显示数据 131 CHAR_LIST::reverse_iterator n; 132 for (n = CList.rbegin(); n != CList.rend(); ++n) 133 { 134 cout << *n << " ";; 135 } 136 cout << endl; 137 m = max_element(CList.begin(), CList.end()); 138 cout << char(*m) << endl; 139 } 140 141 void MyVector() 142 { 143 /*一维Vector*/ 144 vector<int> Vector; 145 for (int i = 0; i < 10; i++) 146 { 147 Vector.push_back(100 - i); 148 } 149 //STL中的排序算法 150 sort(Vector.begin(), Vector.end());///从小到大 151 for (int i = 0; i < 10; i++) 152 { 153 cout << Vector[i] << " "; 154 } 155 cout << endl; 156 reverse(Vector.begin(), Vector.end());///从大道小 157 for (int i = 0; i < 10; i++) 158 { 159 cout << Vector[i] << " "; 160 } 161 cout << endl; 162 163 /*二维Vector*/ 164 165 int i = 0, j = 0; 166 //定义一个二维的动态数组,有10行,每一行是一个用一个vector存储这一行的数据。 167 //所以每一行的长度是可以变化的。之所以用到vector<int>(0)是对vector初始化,否则不能对vector存入元素。 168 vector<vector<int>>Array(10, vector<int>(0)); 169 170 for (j = 0; j<10; j++) 171 { 172 for (i = 0; i<10; i++) 173 { 174 Array[j].push_back(i); 175 } 176 } 177 for (j = 0; j<10; j++) 178 { 179 for (i = 0; i<Array[j].size(); i++) 180 { 181 cout << Array[j][i] << " "; 182 } 183 cout << endl; 184 } 185 //定义一个行列都是变化的数组。 186 vector<vector<int>>Array1; 187 vector<int>line; 188 for (j = 0; j<20; j++) 189 { 190 Array1.push_back(line);//要对每一个vector初始化,否则不能存入元素。 191 for (i = 0; i<9; i++) 192 { 193 Array1[j].push_back(i); 194 } 195 } 196 for (j = 0; j < 20; j++) 197 { 198 for (i = 0; i < Array1[j].size(); i++) 199 { 200 cout << Array1[j][i] << " "; 201 } 202 cout << endl; 203 } 204 205 206 vector<int>arr; 207 arr.push_back(6); 208 arr.push_back(8); 209 arr.push_back(3); 210 arr.push_back(8); 211 for (vector<int>::iterator it = arr.begin(); it<arr.end(); ++it) 212 { 213 cout << *it << " "; 214 } 215 cout << endl; 216 for (vector<int>::iterator it = arr.begin(); it != arr.end();) 217 { 218 if (*it == 8) 219 { 220 it = arr.erase(it); 221 } 222 else 223 { 224 ++it; 225 } 226 } 227 cout << "Afterremove8: "; 228 for (vector<int>::iterator it = arr.begin(); it<arr.end(); ++it) 229 { 230 cout << *it << " "; 231 } 232 cout << endl; 233 } 234 235 void Map_Insert(map<string, string>*MapStudent, string index, string x) 236 { 237 MapStudent->insert(map<string, string>::value_type(index, x)); 238 } 239 240 void MyMap() 241 { 242 char Temp[32] = ""; 243 map<string, string>Map; 244 Map_Insert(&Map, "192.168.0.128", "xiong"); 245 Map_Insert(&Map, "192.168.200.3", "feng"); 246 Map_Insert(&Map, "192.168.200.33", "xiongfeng"); 247 248 map<string, string>::iterator iter; 249 250 iter = Map.find("192.168.0.33"); 251 if (iter != Map.end()) { 252 cout << "findtheelememt" << endl; 253 cout << "Itis:" << iter->second << endl; 254 } 255 else { 256 cout << "not find the element" << endl; 257 } 258 259 for (iter = Map.begin(); iter != Map.end(); iter++) { 260 cout << iter->first << "|" << iter->second << endl; 261 } 262 263 264 Map_Insert(&Map, "192.168.30.23", "xf"); 265 266 for (iter = Map.begin(); iter != Map.end(); iter++) { 267 cout << iter->first << "|" << iter->second << endl; 268 } 269 cout << "-----------------------------" << endl; 270 271 iter = Map.find("192.168.200.33"); 272 if (iter != Map.end()) { 273 cout << "find the element:" << iter->first << endl; 274 cout << "delete element:" << iter->first << endl; 275 276 Map.erase(iter); 277 } 278 else { 279 cout << "not find the element" << endl; 280 } 281 for (iter = Map.begin(); iter != Map.end(); iter++) { 282 cout << iter->first << "|" << iter->second << endl; 283 } 284 } 285 int main() 286 { 287 //MyList(); 288 //MyVector(); 289 MyMap(); 290 return 0; 291 }