ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STL(简述)

2022-01-21 21:33:37  阅读:136  来源: 互联网

标签:容器 函数 iterator STL 简述 vector include cout


 

STL函数对象

STL头文件(13个)

  • < algorithm >

  • < deque >

  • < functional>

  • < iterator>

  • < vector>

  • < list>

  • < map>

  • < memory>

  • < numeric>

  • < queue>

  • < set>

  • < stack>

  • < utility>

函数对象

函数对象概念

概念:

  • 重载函数调用操作符的类,其对象常称为函数对象

  • 函数对象使用重载的()时,行为类似函数调用,也叫仿函数

本质:

函数对象(仿函数)是一个类,不是一个函数

函数对象使用

特点:

  • 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值

  • 函数对象超出普通函数的概念,函数对象可以有自己的状态

  • 函数对象可以作为参数传递

#include<iostream>
#include<string>
using namespace std;
 
class addnum 
{
public:
    int operator() (int a,int b) 
    {
        return a + b;
    }
};
​
class myprint 
{
public:
    void operator()(string name) 
    {
        cout <<name<< endl;
        this->count++;
    }
    int count=0;  //注意给0 因为全局区为给初始化的默认是1 局部变量是随机
};
​
void func(myprint &abc,string bcd)
{
    
    abc(bcd);
}
​
void func2() 
{
    myprint abc;
    func(abc, "佳哥是最帅的");
}
int main() 
{
    //addnum addnum;
    //int a;
    //int b;
//  cout << "输入第一个数字" << endl;
    //cin >> a;
    //cout << "输入第一个数字" << endl;
    //cin >> b;
​
    //addnum(a, b);  //本质上类对象
    //myprint a;
    //a("葫芦娃");
    //a("葫芦娃");
    //a("一棵藤上七个瓜");
    //a("风吹雨打都不配,啦啦啦");
    //cout << "调用次数为" <<a.count<< endl;
    func2();
    system("pause");
    return 0;
}

容器vector

容器vector
算法for_each
迭代器vector<int>::iterator
头文件#include<vector>

操作

操作程序补充
创建vector容器vector<类型>名字;
向容器中插入数据名字.push_back(参数);
通过迭代器访问容器中的数据vector<类型>::iterator itBegin=名.begin();起始迭代器,指向容器中第一个元素
vector<类型>::iterator itEnd=名.end();结束迭代器指向容器中最后一个元素的下一个位置
调出数据*itBegin*itEnd

遍历方式

#include<iostream>
#include<vector>   //容器头文件
#include<algorithm>//标准算法头文件
using namespace std;
int main()
{
    //第一种遍历方式
    while(itBegin!=itEnd)
    {
    cout<<*itBegin<<endl;
        itBegin++;
    }
    //第二种遍历方式
    for(vector<int>::iterator it=名.begin();it!=名.end();it++)
    {
        cout<<*it<<endl;
        //第三种遍历方式
        void print(int a)
        {
            cout<<a<<endl;
        }
        for_each(名.begin(),名.end(),print());
    }
return 0;    
}

vector中存放自定义数据类型

vector<类名>名字;
类名 对象名(构造函数初始化用的变量);
名字.push_back(对象名);
for(vector<类名>::iterator it=名字.begin();it!=名.end();it++)
{
    cout<<(*it).类内成员<<endl;  //it为类指针
    cout<<it->类内成员<<endl;
}

vector中存放自定义类型的指针

vector<类名*>名字;
类名 对象名(构造函数需要参数);
名字.push_back(&对象名);
for(vector<类名*>::iterator it=名字.begin();it!=名.end();it++)
{
    cout<<(*(*it)).类内成员<<endl;  //it为类指针
    cout<<(*it)->类内成员<<endl;
}
    

vector容器嵌套容器

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    vector<vector<int>v>;
    vector<int>v1;    //创建小容器
    v1.push_back(1);  //向小容器中添加数据
    v.push_back(v1); //将小容器插入到大容器中
    for(vector<vector<int>>::iterator it=v.begin();it!=v.end();it++)
    {
        for(vector<int>::iterator vit=(*it).end();vit++)
        {
            cout<<*vit<<endl;
        }
    }
}

标签:容器,函数,iterator,STL,简述,vector,include,cout
来源: https://blog.csdn.net/xj470574/article/details/122629676

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有