首页 > 编程语言 > 详细

C++学习笔记33:泛型编程拓展2

时间:2017-01-07 22:48:27      阅读:343      评论:0      收藏:0      [点我收藏+]

调用标准模板库的find()函数查找数组元素

例子:

#include <iostream>
#include <algorithm>
using namespace std;
const int size = 16;
int main()
{
    int a[size];
    for (int i = 0; i < size; ++i)
    {
        a[i] = i;
    }
    int key = 7;
    int *ip = find(a, a + size, key);
    if (ip == a + size)//不要使用NULL做指针测试,直接使用过尾元
        cout << key << "not found;" << endl;
    else
        cout << key << "found;" << endl;
    return 0;
}

向量迭代器

使用向量迭代器操作向量

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    int key = 7;
    vector<int> iv(10);
    for (int i = 0; i < 10; i++)
    {
        iv[i] = i;
    }
    vector<int>::iterator it, head = iv.begin(), tail = iv.end();
    it = find(head, tail, key);
    if (it != tail)
        cout << "vector contains the value" << key << endl;
    else
        cout << "vector does not contain the value" << key << endl;
    return 0;
}

 

常迭代器

  若不想通过迭代器修改目标对象值,定义迭代器常量

  例子:

    const vector<int>::iterator it;

    非法操作:*it = 10;//不能修改常迭代器指向的对象

流迭代器

使用迭代器访问流

  将输入输出流作为容器

使用方式:定义流迭代器对象

  实例1:ostream_iterator<int> oit(cout, " ");

  实例2:(从cin获取数据):istream_iterator<int>iit(cin);

  实例3:(使用空指针创建流结束迭代器):

  istream_iterator<int> iit;

  凡是可以出现迭代器参数的标准算法都可以使用

#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include "random.h"
using namespace std;
const int size = 8;
const int lower_bound = 10;
const int upper_bound = 99;

void Display(vector<int> &v, const char *s)
{
    cout << endl << s << endl;
    vector<int>::iterator head = v.begin(), tail = v.end();
    ostream_iterator<int> oit(cout, ";");
    copy(head, tail, oit);
    cout << endl;
}
int main()
{
    vector<int> a(size);
    for (int i = 0; i < size; ++i)
    {
        a[i] = GenerateRandomNumber(10, 99);
    }
    Display(a, "Array generated:");
    vector<int>::iterator head = a.begin(), tail = a.head();
    sort(head, tail);
    Display(a, "Array sorted:");
    reverse(head, tail);
    Display(a, "Array reversed;");
    return 0;
}

 

C++学习笔记33:泛型编程拓展2

原文:http://www.cnblogs.com/hujianglang/p/6260405.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!