C++实验_4:STL应用

本文介绍了C++的STL标准模板库,涵盖了容器、迭代器、序列变换、像素变换以及学生信息的存储管理。重点讨论了不同容器的类型,如顺序容器和关联容器,迭代器的使用,以及如何进行序列变换如取反、平方和立方。此外,还讲解了在学生信息管理中使用集合和映射(map)进行增删改查操作。
摘要由CSDN通过智能技术生成

实验背景

STL的全称为Standard Template Library(标准模板库)。STL涉及到很多方面,包括但不限于容器,迭代器,算法和函数对象等。本次博客只介绍最直观的STL内容,涉及原理以及更深刻的概念内容还需自行寻找资料学习。
总结:
1.标准模板库(Standard Template Library,简称STL)定义了一套概念体系,为泛型程序设计提供了逻辑基础。
2.STL中的各个类模板、函数模板的参数都是用这个体系中的概念来规定的。
3.使用STL的模板时,类型参数既可以是C++标准库中已有的类型,也可以是自定义的类型——只要这些类型是所要求概念的模型。

1.容器

容器(container)是容纳、包含一组元素的对象,容器类库中包括了13种基本容器。这些容器可以分为两种基本类型:顺序容器(sequence container)和关联容器(associative container)。顺序容器将一组具有相同类型的元素以严格的线性形式组织起来。关联容器具有根据一组索引来快速提取元素的能力。根据元素的组织方式,关联容器可以分为有序和无序,其中有序容器中健(key)按顺序存储,无序容器则使用哈希函数组织元素。

2.迭代器

迭代器(iterator)提供了顺序访问容器中每个元素的方法。对迭代器可以使用“++”运算符来获得指向下一个元素的迭代器,可以使用“*”运算符访问一个迭代器所指向的元素。如果元素类型是类或结构体,还可以使用“->”运算符直接访问该元素的一个成员,有些迭代器还支持“–”运算符获得上一个元素的迭代器。指针也具备同样的特性,因此指针本身就是一种迭代器,迭代器是泛化的指针

3.序列变换(取反,平方,立方)

h函数:

//取反
template <typename T>
T InvT(T a)
{
   
    return -a;
}
//平方
template <typename T>
T SqrT(T a)
{
   
    return a*a;
}
//立方
template <typename T>
T CubicT(T a)
{
   
    return a*a*a;
}
//数组取反
template <typename T>
void transInvT(T a[],T b[],int num)
{
   
    for(int i=0;i<num;i++)
    {
   
        b[i]=InvT(a[i]);
    }
}
//数组平方
template <typename T>
void transSqrT(T a[],T b[],int num)
{
   
    for(int i=0;i<num;i++)
    {
   
        b[i]=SqrT(a[i]);
    }
}
//数组立方
template <typename T>
void transCubicT(T a[],T b[],int num)
{
   
    for(int i=0;i<num;i++)
    {
   
        b[i]=CubicT(a[i]);
    }
}
//输出函数,采用指针遍历输出
template <typename T>
void outputCont(string strName,ostream &os,T begin,T end)
{
   
    os<<strName<<":";
    for(;begin!=end;begin++)
    {
   
        os<<*begin<<"\t";
    }
    os<<endl;
}

main函数:

int main()
{
   
    const int N=5;
    int a[N]={
   1,2,3,4,5};
    int b[N];
    outputCont("a",cout,a,a+N);
    transInvT(a,b,N);
    outputCont("InV a",cout,b,b+N);
    transSqrT(a,b,N);
    outputCont("Sqr a",cout,b,b+N);
    transCubicT(a,b,N)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值