关于快读
Posted 海岸线绿藻疯长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于快读相关的知识,希望对你有一定的参考价值。
关于快读
我们在关于卡常里提到了快读,这里是一些方便(闲得慌)的写法
\\(case\\space 1\\)
有时候要读多种类型,可以用 \\(template\\),这样只用写一个快读
template<typename T>
il void rd(T &x)
x=0;ri bool f=0;ri char c=getchar();
while(~c&&!isdigit(c)) f|=(c==45),c=getchar();
while(isdigit(c)) x=x*10+(c^48),c=getchar();
x=f?-x:x;
template<typename T>
il void wt(T x)
if(x<0) x=-x,putchar(45);
if(x>=10) wt(x/10);
return putchar(x%10|48),void();
\\(case\\space 2\\)
一些没用的偷懒……可以一次读多个
template<typename T>
il void rd(T &x)
x=0;ri bool f=0;ri char c=getchar();
while(~c&&!isdigit(c)) f|=(c==45),c=getchar();
while(isdigit(c)) x=x*10+(c^48),c=getchar();
x=f?-x:x;
template<typename T,typename ...Args>
il void rd(T &a,Args &...args)rd(a),rd(args...);
template<typename T>
il void wt(T x)
if(x<0) x=-x,putchar(45);
if(x>=10) wt(x/10);
return putchar(x%10|48),void();
template<typename T,typename ...Args>
il void wt(T a,Args &...args)wt(a),putchar(10),wt(args...);
使用 GRDB 在 Swift 中操作 SQLite 数据库 | 快读
关于 GRDB
说到 iOS 中使用 SQLite,如果你有过 Objective-C 开发经验的话,那么你肯定会想到 FMDB。在 Objective-C 生态中,这个库的使用非常广泛。不光是 FMDB,就单说 SQLIte 本身,也已经基本成为移动端的数据存储标配。假如你要在移动端存储一些本地数据,一旦数据结构稍微复杂起来,SQLite 就是最好的选择。无论是在 iOS 还是 Android 平台上,它的使用率都很高。
这次聊的 GRDB 就是针对 Swift 开发者的 SQLite 操作工具库。多啰嗦一句,为什么要有诸如 FMDB 或是 GRDB 这样的第三方组件呢,最主要的原因之一就是 SQLite 原生的 API 相对更偏底层
,作为应用开发者更需要的是一个能高效实用的 API 接口,这也是这些第三方组件主要所提供的价值了。
开始使用
首先我们需要安装 GRDB,简单的方式是通过 CocoaPods:
|
当然,你也可以通过其他包管理,比如 Carthage 或者完全手动安装。 这里我们不多赘述,稍后我把 GRDB 的 Github 主页发出来,里面有完整的介绍。
安装完成之后,就可以使用它的 API 接口了:
|
有两种方式建立数据库连接, DatabaseQueue
和 DatabasePool
。两种方式各有优劣,DatabaseQueue
不支持并发操作,但可以创建内存级别的数据库。 DatabasePool
对并发操作有内建的支持,但它会使用一种叫做 WAL 的模式操作数据库,也会带来一些弊端。
所以官方建议,如果你没有明确的目标,那么默认选择 DatabaseQueue
模式。
另外,关于 WAL 模式的详细内容可以参考 SQLite 官网的介绍 https://www.sqlite.org/wal.html
创建好数据库连接之后,我们就可以进行 SQL 操作了,比如建表和插入数据:
|
查询数据:
|
查询数据使用的是 Row.fetchOne 方法,这个方法可以查询一条记录。
当然除了直接使用 SQL 这种形式外, GRDB 还给我们提供了一组称为 Query Inerface 的方法:
|
结束
这次把 GRDB 给大家做了一个简要的介绍。GRDB 算的上是 Swift 社区中比较成熟的 SQLite 开源库,支持多个 Swift 版本,并且 API 接口使用起来也比较简洁,如果你的项目中有类似需要的话,GRDB 会是一个不错的选择。
当然这里给大家列出的只是它的九牛一毛,完整的文档大家还可以到它的 Github 主页上面继续了解 https://github.com/groue/GRDB.swift
以上是关于关于快读的主要内容,如果未能解决你的问题,请参考以下文章