败犬日报 2024-12-23
1. 万能引用不匹配初始化列表
effective cpp 老生常谈。
cpp
void f(auto &&) { std::cout << "1" << std::endl; }
void f(auto (&&)[]) { std::cout << "2" << std::endl; }
int main() {
f({1, 2, 3});
auto &&x = {1, 2, 3};
f(std::move(x));
}
输出是 2 和 1。
auto (&&)[]
是对无边界数组的右值引用。
2. sqlite 在什么场景下比较适合
sqlite 轻量、性能高,而且代码很可靠,基本没有乱七八糟的 bug。这些特点决定了 sqlite 适合没有分布式、并发之类复杂场景,就是想找个位置存数据的时候。
sqlite 可以当成本地文件存储的上位替代,而不太适合当 dbms 用。
Android 官方建议的复杂本地存储库 Room 就是基于 sqlite 的。