最近在学C++,其中一些常用的但不熟悉的类型总结如下:
- pair 类型
经常要用到含有二维参数的一些对象,比如一个点的横纵坐标,一个人们名字的first name和last name。
Requirment: header file :#include <utility>
eg: typedef pair <int, int> POINT_T;
POINTS_T point1; //定义一个POINTS_T类型对象
typedef pair <string ,string> NAME_T; - vector类型
vector类型变量有两种使用习惯,一种是数组习惯,一种是STL习惯。
eg:#include <iostream> #include <string> #include <vector> using namespace std; void Sort(vector<int> &ivec, int length); int main() { const int size = 5; vector <string> svec(size); //数组用法,事先规定好长度 string str[size] = {"weilele","lelewei","luoli","haha","happy"}; cout << "输出数组元素(字符串)\n"; for(int i=0;i<size;i++) { svec[i] = str[i]; cout << svec[i] <<endl; } vector <int> ivec; //STL使用方法,定义时是空的 for(i=0;i<10;i++) { if(i>8) break; ivec.push_back(10-i); } cout <<"使用数组访问方式输出结果\n"; for(i=0;i<ivec.size();i++) { cout << ivec[i] << endl; } cout <<"使用STL访问方式输出结果\n"; for(vector<int>::iterator it= ivec.begin();it!=ivec.end();++it) //STL使用方法 { cout << *it<<"\n"; } Sort(ivec,ivec.size()); cout <<"排序后输出结果\n"; for( it= ivec.begin();it!=ivec.end();++it) //STL使用方法 { cout << *it<<"\n"; } return 0; } / //实现对vector中元素的排序(冒泡排序) void Sort(vector<int> &ivec, int length) { int i,j; for(i=1;i<length;i++) { for(j=0;j<length-i;j++) { if(ivec[j]>ivec[j+1]) { int temp; temp = ivec[j]; ivec[j] = ivec[j+1]; ivec[j+1] = temp; } } } }
3、map
map类型,也叫关联数组(associated array),我们提供一个key/value对,key值用来索引map,value值用来被存储和检索的数据。使用时要包含#include<map>,使用map时两个最主要的操作就是向里面放入元素和查询元素是否存在。查找时按照key值来查询,然后得到索引值value值。map与pair的不同之处是pair的两个参数之间可以有关系也可以没有关系,map的两个参数之间一定存在对应的关系,根据key值来索引value值。map在存储时已经按照键值排序(默认使用less()函数排序,也就是从小到大顺序(小的在前面,大的在后面,0---size))。
4、array,queue,list,stack,STL包含的模板类,map和set,multimap,multiset的排序,map与pair的不同之处。