CC++ 快读

    科技2022-08-18  113

    有时候数据量比较大的时候,即使使用C语言提供的scanf函数也是会超时,这个时候就需要快读函数了。之所以可以使用快读,是因为getchar函数要比scanf函数快,所以自己编写的快读函数要更高效一点。还有就是,在快读函数中使用大量位操作代替加减乘除来减少时间的消耗,也是一个很好的选择,数据量越大,效率提升就越明显。这里在判断是否是数字的时候建议千万不要使用isdigit函数,并不知道这个函数到底里面是什么,但单从函数调用的耗时可能也很多,所以还是老老实实用条件判断。下面给出模板代码,不管是什么类型的快读都只要改变一下类型就可以使用。

    inline LL QuickRead() { LL s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; ch>='0' && ch<='9'; ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return (w == -1 ? -s : s); }

    所以,isdigit函数真的拉低效率,如果他的出镜不多可以考虑,频繁出现就别用它了还是。

    Processed: 0.021, SQL: 9