STL学习(一)

来源:互联网 发布:选择打印机端口 怎么选 编辑:程序博客网 时间:2024/05/28 15:12

STL概述

    STL的一个重要的特点:数据结构和算法的分离。

    为了避免和其他头文件冲突,STL的头文件中不再使用常规的.h扩展,例如包含string类、迭代器和算法:

    #include <string>

    表 1. STL头文件和容器类

#include

Container Class

 

<deque>

deque

 

<list>

list

 

<map>

map, multimap

 

<queue>

queue, priority_queue

 

<set>

set, multiset

 

<stack>

stack

 

<vector>

vector, vector<bool>

 


 命名空间

    using namespace std;

迭代器

        迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,c++的指针也是一种迭代器。但是迭代器不仅仅是指针,因此它们不一定具有地址。


迭代器的类型

       对于STL数据结构和算法,可以使用五种迭代器:

  •  Input iterators 提供对数据的只读访问。
  •  Output iterators 提http://write.blog.csdn.net/postedit/7411459供对数据的只写访问。
  •  Forward iterators 提供读写操作,并能向前推进迭代器。
  •  Bidireactional iterators 提供读写操作,并能向前和向后操作。
  •  Random access iterators 提供读写操作,并能在数据中随机移动。

        尽管各种不同的STL实现细节方面有所不同,可以把上边的迭代器想象为一种继承关系,下面的迭代器继承自上面的迭代器。

 指针迭代器

            下面的程序显示了,一个指针也是一个迭代器,同时也显示了STL一个主要特征:STL不只能够用于自己的类类型,而且可以用于任何的c或者c++类型(这句什么意思?)

#include <iostream.h>
#include <algorithm>

using namespace std;

#define SIZE 100
int iArray[SIZE];

int main(int argc,char *argv[])
{
    iArray[20] = 50;
    
    int *ip = find(iArray,iArray+50,50);

    if (ip == iArray+SIZE)
    {
        cout<<"没有找到搜索的元素"<<endl;
    }
    else
    {
        cout<<*ip<<" 在数组中找到"<<endl;
    }
    return 0;
}

容器迭代器

       容器迭代器和c++的指针虽然都是迭代器,但是和指针变量不同的是,可以使用容器类的方法获得迭代器的对象,例如begin()和end(),rbegin()和rend()等。

 #include <iostream.h>
#include <algorithm>
#include <vector>

using namespace std;

vector<int>  intVector(100);
int main(int argc,char *argv[])
{
    //iArray[20] = 50;

    intVector[20] = 50;
    vector<int>::iterator ivalue = find(intVector.begin(),intVector.end(),50);
    
    if (ivalue != intVector.end())
    {
        cout<<"向量中包括值"<<*ivalue<<endl;
    }
    else
    {
        cout<<"向量中不包括指定的值"<<endl;
    }
    return 0;
}

    (待续。。。。。。)

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 金立手机账号密码忘了怎么办 乐视手机账号密码忘了怎么办 企业邮箱发出去邮件撤不回来怎么办 餐厅加热保温设备零线带电怎么办 小米手机不小心把照片删了怎么办 华为手机不小心把照片删了怎么办 网易邮箱被改成别人的姓名怎么办 苹果手机忘记id密码和邮箱怎么办 163邮箱下载的附件没有了怎么办 小米自带浏览器打开网页太慢怎么办 再歪一点授权码忘记了怎么办 注册支付宝的手机号不用了怎么办 手机号被别人注册了支付宝怎么办 支付宝账号密码都忘了怎么办 申请微信公众号邮箱被占用怎么办 邮箱注册微博需要手机验证怎么办 苹果手机的ad码忘记了怎么办 苹果手机酷狗音乐没有声音怎么办 在手机屏上不能缷载软件怎么办? 手机酷狗音乐下载歌曲要钱怎么办 酷狗下载歌曲后歌词不见了怎么办 手机酷我音乐缓冲文件损坏怎么办 苹果手机音乐里的歌删掉了怎么办 上课学生把粉笔擦藏起来了怎么办 手机没法解压10g压缩包怎么办 苹果id被锁邮箱也忘记密码怎么办 手机号注册的微信忘记密码怎么办 qq号注册微信忘记密码怎么办 云课堂密码忘记手机号更改了怎么办 孩子做事才要奖励怎么办的教案 员工做事效率低家庭情况不好怎么办 安全云课堂人脸识别失败怎么办 酷我k歌里音乐太少怎么办 酷狗里面的歌没有了怎么办 第一试用网登录密码忘记了怎么办 第一试用网登录密码忘了怎么办 微博登录直播间帐号被锁定怎么办 硫酸不小心弄到皮肤上怎么办 小米平板进水了开不了机怎么办 U盘被弹出后再插没有显示怎么办 视频从U盘传下来不能播放怎么办