zoukankan      html  css  js  c++  java
  • STL初涉

    今天开始学习STL的容器了,希望可以写的稍微系统点,自己也能留着以后看,给别人也能看的顺眼点!

    Vector

    定义:

    1  vector<int> intVector(100); //申请了 100 int的空间 并且全是0

    定位函数

     

    你可以使用容器类方法来获取迭代器对象。两个典型的容器类方法是

    begin()和end()。

    1 std::vector<int>::iterator it=find(intVector.begin(),intVector.end(),100);

    //显示找到的值

    1 cout<<*it<<endl; //迭代器就像一个指针

    迭代器

    定义:

    vector<int>::iterator first;

    设置对象,设置值

    1 first=intVector.begin();
    2
    3 *first=300;

    常量迭代器与指向常量的迭代器

    首先: *const必须在定义时初始化。。。

     

     

    1.常量迭代器 定义 

     

    1   vector<int>::iterator const result=intVector.begin();



    或者 

    const vector<int>::iterator  result=intVector.begin();



    2.指向常量的迭代器 

     

    vector<int>::const_iterator  result=intVector.begin(); 

     

    输出迭代器的应用。

     1 #include "stdafx.h"
    2
    3 #include "iostream"
    4
    5 #include "time.h"
    6
    7 #include "algorithm"
    8
    9 #include "vector"
    10
    11
    12
    13 using namespace std;
    14
    15
    16
    17 void display(vector<int> & v,const char *s);
    18
    19 int _tmain(int argc, _TCHAR* argv[])
    20
    21 {
    22
    23
    24
    25 srand(time(NULL));
    26
    27 vector<int> colection(10);
    28
    29 for(int i=0;i<10;i++)
    30
    31 colection[i]=rand()%1000;
    32
    33
    34
    35 display(colection,"在排序之前:");
    36
    37 sort(colection.begin(),colection.end());
    38
    39 display(colection,"在排序之后:");
    40
    41 return 0;
    42
    43 }
    44
    45 void display(vector<int> & v,const char *s)
    46
    47 {
    48
    49 cout<<endl<<s<<endl;
    50
    51 copy(v.begin(),v.end(),ostream_iterator<int>(cout,"\t"));
    52
    53 }
    54
    55

     

    ostream_iterator 输出迭代器
    标准函数库里面 的初始化

    函数Display()显示了如何使用一个输出流迭代器。下面的语句将容器中的值传输到cout 输出流对象中:
    copy(v.begin(), v.end(),
    ostream_iterator<int>(cout, "\t"));
    第三个参数实例化了ostream_iterator<int>类型,并将它作为copy()函数的输出目标迭代器对象。
    “\t”字符串是作为分隔符。运行结果:
    $ g++ outstrm.cpp
    $ ./a.out
    Before sorting
    677 722 686 238 964 397 251 118 11 312
    After sorting
    11 118 238 251 312 397 677 686 722 964
    这是STL 神奇的一面『确实神奇』。为定义输出流迭代器,STL 提供了模板类ostream_iterator。这个
    类的构造函数有两个参数:一个ostream 对象和一个string 值。因此可以象下面一样简单地创建一个迭
    代器对象:
    ostream_iterator<int>(cout, "\n")
    该迭代起可以和任何接受一个输出迭代器的函数一起使用。

    (引用)

     

     

    迭代器提供对一个容器中的对象的访问方法

     

    对于STL 数据结构和算法,你可以使用五种迭代器。下面简要说明了这五种类型:

    · Input iterators 提供对数据的只读访问。

    · Output iterators 提供对数据的只写访问

    · Forward iterators 提供读写操作,并能向前推进迭代器。

    · Bidirectional iterators 提供读写操作,并能向前和向后操作。

    · Random access iterators 提供读写操作,并能在数据中随机移动。

     

     

      


    作者:leisure
    原文出自:http://www.cnblogs.com/leisure/
    感谢园子,感谢各位支持。本文版权归伟征和博客园共有,欢迎转载@ 但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    只是想分享,欢迎拍砖!促进我成长

  • 相关阅读:
    centos下升级python
    微信公众号(二)
    微信公众号的开发(一)
    nginx 新手入门
    Mysql is not allowed to connect mysql server
    docker 新手入门 (阿里镜像仓库的使用)
    docker 新手入门 (web项目的部署)
    jquery easyui combox不能编辑只能选择
    $.messager.confirm 用法
    html下载excel模板
  • 原文地址:https://www.cnblogs.com/leisure/p/2394673.html
Copyright © 2011-2022 走看看