• C/C++ 吐槽第一期:你最讨厌的C/C++里面的数据类型是什么


    C/C++ 这里面讨论的范围包括从以往开始,到现有的所有官方标准,VC扩展,GCC扩展,

    C语言部分包括C89、C90、C99、C11这些知名的大版本,中间或者之前的比如K&R这种不出名的小版本我没啥兴趣去了解,所以暂时放弃。

    C++语言部分包括C++98、C++03、C++11这种知名的大版本,更早之前的1.0、2.0、3.0什么的,暂时放弃。

    再加上两大主流编译器的扩展,VC扩展以及GCC扩展。

    clong之类的这种不考虑。

    进入主题

    今天第一次扯蛋,我想说的类型就是

    std::function

    C++11,新出了这么个玩意,哎,这是要干啥,到底为了啥。

    首先我们需要承认的就是,这东西其实很牛,功能很强大,可以把各种乱七八糟的玩意都组装成函数,

    但是问题来了,作为一个函数指针,最基础的功能,就是比较两个函数是否是同一个函数,这功能没有啊,

    好比一个数学高材生,解决各种疑难问题,解决各种四元四次方程,but ,1+1 等于几,这个算不了。

    比如按照C++11最新标准,std::function 能干的事情可多了,

    可以这么玩

     1 std::function<int(int, int)> f = fpFunction; 

    可以这么玩

     1 using FtCallbackProc = std::function<void(int)>; 

    还可以这么玩

     1 std::function<int()> fp = std::bind([](int x, int y)->int { return x + y; }, 10, 2); 

    但是,不能这么玩

    	std::function<int(int, int)> fp = add;
    	fp == add;
    

    编译不过,呵呵呵呵呵呵,说是没operator==。

    这样就会导致出现一个问题,就是stl里面基本上如果用了std::function的话,那么就不能再做查询、删除操作了,

    我定义了一个变量,给了它一个值,我都不能判断它的值和我给它的值是不是相等,

    这变量也是牛B到没边了。

    人生无奈,其实我很奇怪的是,使用它到底是图什么,图少打几行代码么,我用这个类用的实在是少,

    而且我使用的很多都是极端用法,常规用法我也不怎么用得上。

    so 这个类型是我发现非常坑的类型,我最讨厌的数据类型。

  • 相关阅读:
    centos 无线网卡安装,网卡rtl8188ee
    centos mysqldb 安装
    centos 安装gcc时,出错:Found 10 pre-existing rpmdb problem(s), 'yum check' output follows:
    peewee 字段属性help_text的支持问题
    mysql查看字段注释(帮助信息)指令
    centos mysql 大量数据导入时1153 错误:1153
    php在centos下的脚本没有解析的问题
    [转]mysql分布式方案-分库拆表
    [转]Mysql海量数据存储和解决方案之一—分布式DB方案
    mysql 数据库字符集的指定
  • 原文地址:https://www.cnblogs.com/suanguade/p/10714624.html
Copyright © 2020-2023  润新知