现在的位置: 首页 > 综合 > 正文

STL初涉

2013年03月16日 ⁄ 综合 ⁄ 共 1906字 ⁄ 字号 评论关闭
今天开始学习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 提供读写操作,并能在数据中随机移动。

 

 

  

抱歉!评论已关闭.