回顾学习C++收获-STL
2017-07-30 15:50
761 查看
一.结构体
我记得在我上个学期也就是大一上结束的那个寒假,我问我的一个学长一个问题,就是C的结构体和Java的类很类似,学长告诉我这两者是不同的概念。但我觉得这是何等的相似啊。
最近看了一下算法指导书上,写道C++的结构体里除了可以有变量(称为成员变量)之外还可以有函数(称为成员函数)。一般用struct定义纯数据的类型,只包含较少的辅助成员函数。而用class定义拥有复杂行为的类型
二.模板
C++的模板是一个很神奇的工具。在这个学期末,我们有一个C++课程设计,我用到了模板。
这段代码我放在我自定义的文件类里面,用于读取一个我自定义的对象。
三.容器
我记得在课程设计中,我定义了三个类装载我的自定义对象,并且使用容器在内存中存储我的这些对象。为了使知识点全面运用,我使用了三种不同的容器装载我的对象。
这里我运用了 list集合 不同于vector l list内部使用链表结构,vector使用的是不定长数组
这里使用了map,是一种映射,使用的键值对的形式。 [] 中括号运算符里面是键-key 右边赋值是 值-value
在使用这些集合的过程中,我得知有一个很厉害的东西,就是迭代子,在上述代码中,我创建了一个迭代子 k 然后通过遍历迭代子 k++ 可以遍历整个集合。迭代子可以说成是集合对象的指针。 这实在是太美妙了,我在学习Android开发时从来没有涉及过这样的手段。
在调试代码的过程中,出了很多的差错,老版本的编译器不能在类中定义成员变量的时候进行实例化,这样会报错,但在新版本不会报错。不过虽然不会报错但要记住,最好不要进行赋值或者实例化,因为这样不满足面向对象。实例化的程序可以放在构造函数中。
我记得在我上个学期也就是大一上结束的那个寒假,我问我的一个学长一个问题,就是C的结构体和Java的类很类似,学长告诉我这两者是不同的概念。但我觉得这是何等的相似啊。
最近看了一下算法指导书上,写道C++的结构体里除了可以有变量(称为成员变量)之外还可以有函数(称为成员函数)。一般用struct定义纯数据的类型,只包含较少的辅助成员函数。而用class定义拥有复杂行为的类型
二.模板
C++的模板是一个很神奇的工具。在这个学期末,我们有一个C++课程设计,我用到了模板。
// template<typename T>//用函数 模板实现 // T add_class(T& a){ // T m; // this->ifile.read((char*)&m,sizeof(T)); // return m; // }
这段代码我放在我自定义的文件类里面,用于读取一个我自定义的对象。
三.容器
我记得在课程设计中,我定义了三个类装载我的自定义对象,并且使用容器在内存中存储我的这些对象。为了使知识点全面运用,我使用了三种不同的容器装载我的对象。
list<securer> list_securer; list<securer>::iterator k;//创建一个迭代器 //securer_ifile.ifile.close(); //securer_ifile.set_file("securer_ifile"); securer s_1; //securer_ifile.ifile.read((char*)&s_1,sizeof(securer)); s_1 = securer_ifile.add_class(); //s_1 = one ; //securer_ifile.add_class(s_1); list_securer.push_front(s_1); s_1 = securer_ifile.add_class(); //securer_ifile.add_class(s_1); list_securer.push_front(s_1); for(k=list_securer.begin();k!=list_securer.end();k++){//用迭代子遍历 k->showmessage(); }
这里我运用了 list集合 不同于vector l list内部使用链表结构,vector使用的是不定长数组
cleaner cone("王语嫣","女",18,20001),ctwo("赵敏","女",25,20002),cthree("周芷若","女",45,20003) ,cfour("天山童姥","女",88,20004); vector<cleaner> vector_cleaner; vector_cleaner.push_back(cone); vector_cleaner.push_back(ctwo); vector_cleaner.push_back(cthree); vector_cleaner.insert(vector_cleaner.end(),cfour);
map<int,maintenancer> map_cer; maintenancer mone("段誉","男",19,30001),mtwo("杰克","男",45,30002); map_cer[30001]=mone; map_cer[30002]=mtwo;
这里使用了map,是一种映射,使用的键值对的形式。 [] 中括号运算符里面是键-key 右边赋值是 值-value
在使用这些集合的过程中,我得知有一个很厉害的东西,就是迭代子,在上述代码中,我创建了一个迭代子 k 然后通过遍历迭代子 k++ 可以遍历整个集合。迭代子可以说成是集合对象的指针。 这实在是太美妙了,我在学习Android开发时从来没有涉及过这样的手段。
在调试代码的过程中,出了很多的差错,老版本的编译器不能在类中定义成员变量的时候进行实例化,这样会报错,但在新版本不会报错。不过虽然不会报错但要记住,最好不要进行赋值或者实例化,因为这样不满足面向对象。实例化的程序可以放在构造函数中。
相关文章推荐
- C++ STL学习笔记三 deque双端队列容器
- 【C++ STL学习之四】容器list深入学习
- c++ stl library 学习(5)
- C++学习-STL容器
- C++ STL 学习笔记
- STL学习笔记(四)——温习一下C++的一些重要概念(上)
- 算法学习——搜索和C++ STL 实现全排列和去重全排列
- 【C++ STL学习之五】容器set和multiset探秘
- C++ STL学习笔记一----map
- c++ STL学习笔记-----vector
- C++--STL-string容器的使用,学习代码
- C++ STL学习之旅1(STL基本思想)
- C++ STL学习之一:容器的共通能力和共通操作总结
- C++ STL源码学习(priority_queue内部heap篇)
- 【C++】【STL】STL学习之旅二:模板
- C++ STL学习容器deque深入学习
- C++ STL学习——heap
- 关注C++细节——STL中map学习小结
- C++ STL容器的学习使用(vector、queue、list、set、map)
- 轻轻松松学习C++ 标准模板库STL