C++阶段总结(二)

组合和继承

组合

将一个类的对象作为另一个类的成员,被称作组合或包含。
我认为最典型的组合是在图书管理系统中。先写了一个Time类,里面有成员year,month,day这样的成员,之后在写Book类、Students类的时候,可以分别设一个Time类的对象,分别作为这两个类的成员,作为图书出版时间和用户注册时间。
总结相关知识点如下:

  1. 创建包含对象成员的组合对象时,会执行成员类的构造函数初始化对象成员。例如:
class Book{
  Time t;
  string name;
  public:
  Book(){}
  Book(Time tt,string n):t(tt),name(n){}
 };//析构函数的执行次序和构造函数相反。
  1. 如果没有在初始化列表中对成员对象进行显式的初始化,编译器会执行成员对象的默认构造函数,如果成员对象所属的类不存在默认的构造函数,会引起编译错误。

stl

STL: Standard Template Library
STL是算法 泛型算法 和其他的一些组件的集合
STL是C++标准的一个重要的组成部分。
STL的主要组件://他并不是仅仅针对某种类型而是对于很多类型。
container(容器)
algorithm(算法)
iterator(迭代器)
function object(函数对象)

#include
#include
#include//动态数组
#include
#include
using namespace std;
int main()
{ 
 const int N= 5;
 vector<int>s(N);//申请一个长度为5的数组
 for(int i=0;i<N;i++)
  cin>>s[i];
 transform(s.begin(),s.end(),ostream_iterator<int>(cout," "),negate<int>());
 cout<<endl;
}

容器:容纳,包含一组数据元素的对象,支持了软件设计中常用的先行群体。
迭代器:提供的顺序访问容器中每个元素的方法,含类似指针的用法。

s.begin():容器s的第一个元素
s.end():容器s的最后一个元素的后面。
ostream_iterator(cout," "):构造出来的输出迭代器对象,通过cout输出int型数据,中间用空格(“ ”)隔开。
用迭代器要用#include
算法:STL提供大量具有统一性的算法,可以广泛用于不同的对象和内置函数类型。
迭代器对于存储在容器中的元素序列进行遍历,提供的访问容器中每个元素的方法。
指针是迭代器中的一种,
输入流迭代器和输出流迭代器
输入流,输出流
1.标准类:stream,ostream
2 实例 cin ,cout

容器的通用功能

  • 用默认构造函数构造空容器

  • 支持关系运算符:== ,!= , < , <=, > ,>=

  • clear():将容器清空

  • empty():判断容器是否为空

  • size():得到容器元素个数

  • s1.swap(s2):将s1和s2两个容器内容交换

  • 随机访问容器获得容器s的第n个元素

  • s[i]获得容器s的第n个元素

  • 相关迭代器类型(s表示容器类型)

  • s.iterator:指容器元素的迭代器类型
    向量(vector)
    特点:

  • 一个可以扩张的动态数组

  • 随机访问

  • 在尾部插入或删除一个元素快,在中间或则头部插入元素慢

  • 向量的容量

  • 容量(capacity):实际分配空间的大小

  • s.capacity():返回当前容量

  • s.reserve(n):若容量小于n,则对s进行扩展,使其容量至少为n。

这一部分主要是巩固了大一下学期所学的stl,现在才得以搞清楚stl用起来的方便与便利。
STL的最主要的两个特点:数据结构和算法的分离,非面向对象本质。访问对象是通过象指针一样的迭代器实现的;容器是象链表,矢量之类的数据结构,并按模板方式提供;算法是函数模板,用于操作容器中的数据。由于STL以模板为基础,所以能用于任何数据类型和结构。
在我们学习中虽然stl提供了方便但是还是要踏踏实实的去完成老师布置的任务,多探索,学习能力真的很重要!

你可能感兴趣的:(C++阶段总结(二))