栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++的STL的学习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++的STL的学习

目录

1基本概念:

2 vector容器案例:

3string容器

4stack容器:

5Queue容器:(队列)

6list容器(链表):

7set容器(集合容器)


1基本概念:
  1. STL标准模板库
  2. STL从广义上分为1容器2算法3迭代器
  3. 容器和算法之间通过迭代器进行无缝衔接
  4. STL六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器

容器:

用最广泛的一些数据结构实现出来的

数组、链表、树、栈、队列、集合、映射表等

算法:这个都理解啊

就是分为质变和非质变

迭代器:

算法通过迭代器来访问容器中的元素

可以理解为迭代器就是指针

 1:vector容器案例:
#include
using namespace std;
#include
int main()
{
    vector v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    //通过迭代器访问容器中的数据;//类似于我定义一个并且将其赋值;
    vector::iterator itbegin=v.begin();//起始迭代器  指向容器第一个元素
    vector::iterator itend=v.end();//结束迭代器  指向容器最后一个元素下一个位置
    while(itbegin!=itend)
    {
        cout<<*itbegin<<" ";
        itbegin++;

    }
//这是利用了迭代器

 

#include
using namespace std;
#include
#include//标准算法的头文件
void my_print(int val)
{
    cout< v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    //通过迭代器访问容器中的数据;//类似于我定义一个并且将其赋值;
    // vector::iterator itbegin=v.begin();//起始迭代器  指向容器第一个元素
    // vector::iterator itend=v.end();//结束迭代器  指向容器最后一个元素下一个位置
    // while(itbegin!=itend)
    // {
    //     cout<<*itbegin<<" ";
    //     itbegin++;

    // }
    for_each(v.begin(), v.end(), my_print);
}
//利用STL的算法;

2:string容器

1:拼接:

#include
using namespace std;
#include
#include//标准算法的头文件
#include
int main()
{
    string str1;
    string str2;
    str1="woai";
    // str2="youxi";
    // str1+=str2;
    // cout< 

2:查找和替换: 

#include
using namespace std;
#include
#include//标准算法的头文件
#include
int main()
{
    string str1;
    string str2;
    // str1="woai";
    // str2="youxi";
    // // str1+=str2;
    // // cout<
using namespace std;
#include
#include//标准算法的头文件
#include
int main()
{
    string str1;
    string str2;
    str1="I love You";
    str1.replace(0,1,"yushqi");// 从0号字符起1个字符替换为“yushiqi”
    cout< 

先不学string和vector了我现在要用其他的以后学了再补充

stack容器:
#include
using namespace std;
#include
#include//标准算法头文件
#include
int main()
{
    stack stk;
    stk.push(10);
    stk.push(40);
    stk.push(30);
    stk.push(20);//入栈
    while(!stk.empty())//判断栈空空返回1;
    {
        cout< 

Queue容器:(队列)
#include
#include
#include
using namespace std;
int main()
{
    queueQ;
    int i;
    for(i=0;i<3;i++)
    {
        Q.push(i+5.3);
    }
    while(!Q.empty())//判断队列为不为空
    {
        cout< 

list容器(链表):

    #include
    #include
    #include
    using namespace std;
    #include
    void print_list(list&l1)
    {
        for(list::iterator it=l1.begin();it!=l1.end();it++)
        {
            cout<<*it<<" ";
        }
    }
    int main()
    {
        //防止修改容器加const;
        //构造链表有好几种形式:
        //默认构造
        listl1;
        int i=0;
        for(;i<3;i++)
        {
            l1.push_back(i+10);
        }
        print_list(l1);//遍历l1
         //区间构造
        listl2(l1.begin(),l1.end());
        print_list(l2);
        //拷贝构造:
        listl3(l1);
        print_list(l3);
        cout< 
    #include
    #include
    #include
    using namespace std;
    #include
    void print_list(const list&l1)//加const是防止l1被修改;
    {
        for(list::const_iterator it=l1.begin();it!=l1.end();it++)
        {
            cout<<*it<<" ";
        }
        cout<l1;
        int i=1;

        for(;i<5;i++)
        {
            l1.push_back(i+20);
        }
        print_list(l1);
        listl2;listl3;listl4;
        l2=l1;
        print_list(l2);
        l3.assign(l2.begin(),l2.end());
        print_list(l3);
        l4.assign(10,100);
        print_list(l4);//这些都是赋值操作;
        l1.swap(l4);
        print_list(l1);
        print_list(l4);//链表的交换
    }
    #include
    #include
    #include
    using namespace std;
    #include
    void print_list(const list&l1)//加const是防止l1被修改;
    {
        for(list::const_iterator it=l1.begin();it!=l1.end();it++)
        {
            cout<<*it<<" ";
        }
        cout<l1;
        int i=0;
        for(;i<4;i++)
        {
            l1.push_back(i+20);//尾插法;
        }
        print_list(l1);
        cout< 
    #include
    #include
    #include
    using namespace std;
    #include
    void print_list(const list&l1)//加const是防止l1被修改;
    {
        for(list::const_iterator it=l1.begin();it!=l1.end();it++)
        {
            cout<<*it<<" ";
        }
        cout<l1;
        int i=0;
        for(;i<4;i++)
        {
            l1.push_back(i+20);//尾插法;
        }
        print_list(l1);
        l1.push_front(100);//头插;
        print_list(l1);
        l1.pop_back();//尾删;;
        print_list(l1);
        l1.pop_front();
        print_list(l1);
        //头删;
        //插入;
        list::iterator it=l1.begin();//先给一个迭代器移动然后插入
        l1.insert(++it,130);
        l1.insert(++it,130);l1.insert(++it,130);
        print_list(l1);
        //移除:
        l1.remove(130);
        print_list(l1); 
        //清空:
        l1.clear();
        print_list(l1);
    }
#include
#include
#include
using namespace std;
#include
void print_list(const list&l1)//加const是防止l1被修改;
{
    for(list::const_iterator it=l1.begin();it!=l1.end();it++)
    {
        cout<<*it<<" ";
    }
        cout<l1;
    int i=0;
    for(;i<5;i++)
    {
        l1.push_back(i+10);
    }
    // cout<l2;
    l2.push_back(10);
    l2.push_back(90);
    l2.push_back(100);
    l2.push_back(80);
    print_list(l2);
    l2.sort();//默认是升序;
    print_list(l2);
   // l2.sort();
}

set容器(集合容器)
void print_set(set&s)
{
    for(set::iterator it=s.begin();it!=s.end();it++)
    {
        cout<<(*it)<<" ";

    }
    cout<s;
    s.insert(10);
    s.insert(230);//set容器的插入
    s.insert(23);
    s.insert(30);
    print_set(s);
    sets1;
    if(!s.empty())//判断是否为空
    {
        cout<<"s不为空"<::iterator pos=s.find(230);//fing返回一个迭代器并且没找到的话输出的是末尾迭代器
    if(pos==s.end())
    {
        cout<<"meizhaodao"<p=make_pair("yushiqi",18);
    cout< 

map容器、string、vector后续在更

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号