STL 迭代器

容器种类<元素类型>::iterator 对象名

容器种类<元素类型>::const_iterator 对象名

容器种类<元素类型>::reverse_iterator  对象名        //反向

容器种类<元素类型>::const_reverse_iterator 对象名   //反向

//*#include <iterator>*//

ostream_iterator<被发送到输出流的类型,输出流字符类型> 对象名(使用的输出流,"发送去每个数据后分隔符");
(ostream_iterator<int,char> iout (cout," ");)  p617

istream_iterator<输入流的类型,输入流字符类型> 对象名(使用的输入流);
(istream_iterator<cin,char> 对象名 (cin);)//那个cin构造函数为空 表示输入失败 表示文件输入结尾

//************************************************************
copy();
copy(起始点,超尾点,被copy入的迭代)
//************************************************************

back_insert_iterator<容器种类<元素类型>> 对象名(对应容器的实例对象);
(配合算法copy插入到某容器对象尾)
ep:
vector<int> dice(5);
back_insert_iterator<vector<int> > iter_1 (dice);

front_insert_iterator<容器种类<元素类型>> 对象名(对应容器的实例对象);
(配合算法copy插入到某容器对象头)

insert_iterator<容器种类<元素类型>> 对象名(对应容器的实例对象,插入的位子迭代);
(配合算法copy插入到某容器指定位子)

//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////
//
//通用算法copy()  反向迭代veverse_iterator 
//
///////////////////////////////////////////////////////////////
#include <iostream>
#include <iterator>
#include <vector>

int main()
{
    using namespace std;

    int casts[10] = {6, 7, 2, 9 ,4 , 11, 8, 7, 10, 5};
    vector<int> dice(10);
    // copy from array to vector
    copy(casts, casts + 10, dice.begin());  //copy(casts, casts + 10, dice.begin());
    cout << "Let the dice be cast!\n";
    // create an ostream iterator
    ostream_iterator<int, char> out_iter(cout, " ");
    // copy from vector to output
    copy(dice.begin(), dice.end(), out_iter); //copy(dice.begin(), dice.end(), out_iter);
    cout << endl;
    cout <<"Implicit use of reverse iterator.\n";
    copy(dice.rbegin(), dice.rend(), out_iter);
    cout << endl;
    cout <<"Explicit use of reverse iterator.\n";
    vector<int>::reverse_iterator ri;           //vector<int>::reverse_iterator
    for (ri = dice.rbegin(); ri != dice.rend(); ++ri)
        cout << *ri << ' ';
    cout << endl;
    cin.get();
    return 0;
}


///////////////////////////////////////////////////////////////////
//
//back_insert_iterator        insert_iterator
//
//////////////////////////////////////////////////////////////////

// inserts.cpp -- copy() and insert iterators
#include <iostream>
#include <string>
#include <iterator>
#include <vector>

int main()
{
    using namespace std;
    string s1[4] = {"fine", "fish", "fashion", "fate"};
    string s2[2] = {"busy", "bats"};
    string s3[2] = {"silly", "singers"};
    vector<string> words(4);
    copy(s1, s1 + 4, words.begin());
    ostream_iterator<string, char> out(cout, " ");
    copy (words.begin(), words.end(), out);
    cout << endl;

// construct anonymous back_insert_iterator object
    copy(s2, s2 + 2, back_insert_iterator<vector<string> >(words));
    copy (words.begin(), words.end(), out);
    cout << endl;

// construct anonymous insert_iterator object
    copy(s3, s3 + 2, insert_iterator<vector<string> >(words, words.begin()+1));
    copy (words.begin(), words.end(), out);
    cout << endl;
    return 0;
}

posted @ 2007-03-17 23:40  Edward Xie  阅读(332)  评论(0编辑  收藏  举报