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;
}
(待续。。。。。。)
- STL学习(一)
- STL学习之(一)
- 学习STL(一)
- STL学习(一)
- STL学习(一)
- STL 学习笔记一
- stl学习一
- STL学习笔记(一)
- 学习STL(一)
- STL学习记录(一):STL简介
- STL学习笔记(一)
- Effective STL学习总结一
- C++ STL学习笔记一
- STL 学习笔记 ( 一. 概述 )
- STL 入门学习笔记一
- STL学习笔记(一)
- C++ STL学习笔记一
- STL学习笔记(一)
- Oracle 10g 出现Io 异常:Unknown host specified
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- C++学习笔记:迭代器
- strtotime支持的有效时间戳
- STL 线程安全性
- STL学习(一)
- Android 中的拿来主义(编译,反编译,AXMLPrinter2,smali,baksmali)
- stm32进入standby模式
- mini2440 linux2.6 内核制作--initramfs 启动
- 编译EABI-4.3.3+busybox-1.13.0报错-重定义struct iphdr
- 建新站时要考虑的问题
- IOS利用Core Text对文字进行排版
- 一名开发者从做技工的父亲那里学到的5堂课
- 【其它】单击word目录超链接老显示“由于本机的限制,该操作已被取消。请于系统管理员联系”