• 记录 C++ STL 中 一些好用的函数--持续更新 (for_each,transform,count_if,find_if)


    在日常的编程中,有这么几种操作还是比较常见的:

    把一组数据都赋值成一个数,在一组数据中查找一个数,统计一组数据中符合条件的数等等。

    一般的写法可以用循环,没有什么是循环不能搞定的。假如在这里怎么用介绍循环写,估计要被说骗点击率了。。。

    首先,对于批量赋值,我们有这样的几个函数可以用

    1.memset(cstring)

    适用于内置数据类型数组的批量赋值,因为它是按照字节赋值的,所以对于int类型只可以赋值为-1,0,对于char类型可以赋值为任意字符

    例:memset(A,0,sizeof(A));//A为int[10]类型变量

    2.fill(algorithm)

    适用于内置类型数组,自定义类型数组(只支持一维数组)和容器类。因为它是按照单元赋值的,因此可以为数组中每一个元素赋值为任何合法值。在重载了类中=运算符之后,我们还可以将容器内对象批量赋值为一个对象值。

    fill(A,A+10,5); //A为 int[10]类型变量

    fill(vec.begin(),vec.end(),9); //vec 为vector<int>类型

    3.for_each(algorithm)

    适用于任何容器以及数组,可定制性功能强,可以利用自定义函数或者自定义仿函数进行操作(包括赋值,输出值等等)

    例:

    #include <cstdio>
    #include <algorithm>
    #include <vector>
    #include <iostream>
    using namespace std;
    class setNode{
        Node u;
        public:
        setNode(Node u):u(u){}
        void operator ()(Node & node) {
            node = u;
        }
    };
    void print(Node & u){
        printf("(%d,%d)
    ",u.x,u.y);
    }
    int main(){
        vector<Node> vec;
        vec.push_back(Node(1,2));
        vec.push_back(Node(3,4));
        for_each (vec.begin(),vec.end(),setNode(Node(1,2)));
        for_each (vec.begin(),vec.end(),print);
        return 0;
    }
  • 相关阅读:
    HDU-4027-Can you answer these queries?
    Python的多协程(三种简单生成多协程方法)
    关于django 如何实现简单api的restful 接口
    flask 框架服务原理
    DVWA渗透测试环境搭建
    装饰器 python 你也可以叫语法糖
    websocket python实现原理
    robotframe 自定义开发库
    mysql linux 安装卸载
    python+jenkins 构建节点环境编译器配置问题
  • 原文地址:https://www.cnblogs.com/Wade-/p/6617721.html
Copyright © 2020-2023  润新知