`
kmplayer
  • 浏览: 509910 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通用算法笔记4

阅读更多
1,generate_n(序列起点,个数,函数发生器)
2,transform(begin,end,保存起点,unaryfunc)
transform(begin1,end1,begin2,保存起点,binaryfunc)
实例代码:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <set>
#include <vector>
using namespace std;

template<typename ite> //打印任意迭代器类型限定的序列
void myPrint(ite first, ite last, const char* ss="", const char* ee=" ", ostream& os=cout)
{
    if(ss!=0&&*ss!='\0')
        os<<ss<<": "<<ee;
    typedef typename iterator_traits<ite>::value_type T;//这样就可以处理任意迭代器类型限定的序列
    copy(first,last,ostream_iterator<T>(os,ee));
    os<<endl;
}

class LimitRand //生成一个出现一次的随机数
{
    set<int> used;
    int limit;
public:
    LimitRand(int lim):limit(lim){}
    int operator()()
    {
        while(1)
        {
            int i=(int)(rand())%limit;
            if(used.find(i)==used.end())
            {
                used.insert(i);
                return i;
            }
        }
    }
};

int main()
{
  //ostream_iterator<int> out(cout, "\n") ;
  int a[]={1,3,5,7,9};
  int size=sizeof(a)/sizeof(a[0]);
  myPrint(a,a+size,"a");

  const int SZ=10;
  vector<int> x(SZ),y(SZ),r(SZ);

  LimitRand lr(100);
  srand(time(0));
  //结合使用
  generate_n(x.begin(),SZ,lr);
  myPrint(x.begin(),x.end(),"x");
  generate_n(y.begin(),SZ,lr);
  myPrint(y.begin(),y.end(),"y");
  //相加,并将结果保存到r
  transform(x.begin(),x.end(),y.begin(),r.begin(),plus<int>());
  myPrint(r.begin(),r.end(),"x+y");
  //判断是否小于,并将结果保存到r
  transform(x.begin(),x.end(),y.begin(),r.begin(),less<int>());
  myPrint(r.begin(),r.end(),"less");
  //r逻辑取反
  transform(r.begin(),r.end(),r.begin(),logical_not<int>());
  myPrint(r.begin(),r.end(),"logical_not");
}
分享到:
评论

相关推荐

    算法笔记.rar

    算法笔记:Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品...

    遗传算法笔记——7.pdf

    《遗传算法笔记——7》章节主要探讨了遗传算法在数值函数优化计算以及多目标优化问题中的应用和性能评价。遗传算法作为一种通用的优化框架,尤其适用于处理复杂问题的近似最优解。 7.1 数值函数优化计算部分,强调...

    算法设计与分析笔记

    然而,从标题“算法设计与分析笔记”以及描述“算法笔记”来看,我们可以尝试围绕算法设计与分析这一主题来构建相关知识点。接下来,将详细介绍与算法设计和分析相关的知识点,包括但不限于算法的基本概念、分类、...

    随机算法笔记(英文)

    这部分介绍了如何定义概率空间,并给出了通用的概率空间的概念。 **2.2 布尔事件组合** 布尔事件组合是指通过对基本事件进行逻辑运算(如并、交、补)来构建新的事件。这部分解释了如何通过布尔运算来分析和处理...

    安卓逆向学习笔记之逆向OLLVM算法的通用方法.docx

    安卓逆向学习笔记之逆向OLLVM算法的通用方法.docx

    space-saving算法论文

    这种方法不仅能够保持较低的空间消耗,而且在处理具有通用数据分布的数据流时,其性能表现非常稳定。 在实际应用中,Space-Saving算法不仅能够有效地识别数据流中的频繁元素,还能对Top-K查询提供支持,即能够返回...

    算法导论读书笔记

    第八章 **图算法**:图是表示对象间关系的通用数据结构。这一章讨论了图的表示方法、遍历(深度优先搜索和广度优先搜索)、最短路径算法(Dijkstra、Floyd-Warshall)、最小生成树(Prim、Kruskal)等。这些算法在...

    labuladong的算法小抄完整版.pdf

    - 提供了一套解决动态规划问题的通用框架,帮助读者快速入门和深化理解。 #### 动态规划答疑篇 - 针对动态规划学习过程中的常见问题进行解答。 #### 回溯算法解题套路框架 - 回溯算法是解决组合问题的一类算法,本...

    安卓逆向学习笔记之逆向OLLVM的非通用方法-使用unicorn调用算法.docx

    安卓逆向学习笔记之逆向OLLVM的非通用方法-使用unicorn调用算法.docx

    数据结构与算法 学习笔记

    这份"数据结构与算法学习笔记"涵盖了这一领域的核心概念,特别强调了C++模板类的实现,这使得理论知识可以直接应用于实际项目。 首先,我们要了解数据结构。数据结构是组织、存储和管理数据的方式,包括数组、链表...

    AlgorithmNote:《算法笔记》

    《算法笔记》是一本深入探讨计算机算法的书籍,主要针对C++编程语言进行阐述。算法在计算机科学中占据着核心地位,是解决复杂问题的有效工具。C++是一种强大的、通用的编程语言,以其高效性和灵活性著称,尤其适合...

    PAT算法:《算法笔记》实验代码

    《算法笔记》是一本深入探讨算法的书籍,其实验代码主要使用C++语言编写,旨在帮助读者通过实践来理解和掌握各种算法。PAT(Programming Ability Test)算法是这本书中涵盖的一部分内容,通常用于考察编程者的基本...

    SONY笔记本CMOS BIOS通用算号程序

    【标题】"SONY笔记本CMOS BIOS通用算号程序"涉及到的是计算机硬件系统中的一个重要组件——CMOS(Complementary Metal-Oxide-Semiconductor,互补金属氧化物半导体)以及与其相关的BIOS(Basic Input/Output System...

    C++ Primer学习笔记——$11 泛型算法

    4. 写入目标序列的算法: 这些算法需要一个额外的迭代器参数作为写入的目标,例如: - `fill_n`算法:将指定数量的元素填充为给定值,如果目标范围内元素不足,则结果未定义。 使用泛型算法的优点在于代码的简洁...

    凌阳16位工业级通用单片机SPMC75系列应用笔记A.rar

    这份"凌阳16位工业级通用单片机SPMC75系列应用笔记A"包含了关于该系列单片机的重要技术细节和实用案例,对于理解和应用SPMC75系列非常有帮助。 首先,SPMC75系列单片机的核心是16位CPU,具备高速运算能力,能够处理...

    外星人笔记本音乐播放器(三大主题)型号通用

    - **音频增强技术**:可能内置了先进的音频处理算法,如杜比音效或者环绕声技术,让音乐听起来更加立体和丰富。 - **音乐库管理**:支持导入和整理个人音乐库,方便用户快速找到想听的歌曲。 - **播放控制集成**:与...

    LeetCode算法数据结构专训笔记,

    【LeetCode算法数据结构专训笔记】 LeetCode是一个广受欢迎的在线平台,它提供了大量的算法和数据结构问题供用户练习和提升。通过刷LeetCode的题目,你可以显著提高自己的算法能力,尤其是对于链表、树等数据结构的...

    cellpose:一种用于细胞分割的通用算法

    细胞和细胞核分割的通用算法。 这段代码是由 Carsen Stringer 和 Marius Pachitariu 编写的。 要了解 Cellpose,请阅读或观看演讲。 如需支持,请打开一个问题。 如果您想为自己和其他人改进 Cellpose,请考虑...

    回溯算法的刷题笔记,回溯专训

    回溯算法的通用框架通常如下所示: ```cpp vector&lt;&gt; ans; // 存储所有可能的结果数组 void backtracking(路径, 选择列表) { if (满足回溯终止条件) { ans.push_back(当前的结果); return; } for (选择: 本层...

    笔记本电池修复软件 笔记本电池修复软件

    这类软件的主要功能是通过一系列的专业算法和技术手段,帮助用户解决电池性能下降、续航时间缩短等问题。在笔记本电脑使用过程中,电池性能随着时间推移逐渐衰退是普遍现象,这可能由于过度充电、过度放电或者长时间...

Global site tag (gtag.js) - Google Analytics