STL学习(一)

原创 2012年03月30日 18:42:38

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;
}

    (待续。。。。。。)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Boost And STL学习资料

  • 2015-12-18 09:22
  • 493KB
  • 下载

STL学习代码示例

关于C++的STL的学习与再认识(一)

以前学习c++的时候,对比较基础的两点有一定的害怕,就是涉及指针的部分和STL。虽然一直在指针方面下功夫学习,也写过文章记录心得,希望以后碰到指针的问题能够解决。至于STL,在之前对基本的算法有了实现...

STL简析入门基础学习

  • 2011-05-16 14:40
  • 60KB
  • 下载

stl源码剖析 详细学习笔记 RB_tree (1)

// //  RB_tree_STL.cpp //  笔记 // //  Created by fam on 15/3/21. // // #include "RB_tree_ST...

STL 入门学习

  • 2012-02-26 16:43
  • 16KB
  • 下载

标准模板库(STL)学习探究之bitset容器

C++ Bitset (位集合)         C++ Bitsets给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。bitset类模板支持有效的的固定大小...

C++STL模板学习讲义

  • 2013-10-31 20:13
  • 1.50MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)