c++常用库
六月 20, 2022 [c++, 类库] #c++ #类库c++常用库
folly
folly/Synchronized.h 简单使用
https://mp.weixin.qq.com/s/hwsEOPbSdGKP-Tc2ICUURQ
class RequestHandler {
folly::Synchronized<RequestQueue> requestQueue_;
processRequest(const Request& request);
};
void RequestHandler::processRequest(const Request& request) {
requestQueue_.wlock()->push_back(request);
}
vec.withLock([](auto& data "") {
for (int& n : data) {
n *= 2;
}
});
Fbstring —— 一个完美替代std::string的库
https://mp.weixin.qq.com/s?__biz=MzI1OTI4MTEyMQ==&mid=2247484369&idx=1&sn=625c17684a5c5b4b32f5410b86591f2e&chksm=ea7a1a5fdd0d93496a925d58a3d6352ff8c12b76bedfb7e88e5a45483dbfde485199c45c2901&scene=178&cur_album_id=1731469832694366212#rd
bstring 可以 100%兼容 std::string。配合三种存储策略和jemalloc[4],可以显著的提高 string 的性能。 fbstring 支持 32-bit、64-bit、little-endian、big-endian.
abseil
string_view
StrCat
StrCat 可以高效的从多个组件构建一个字符串,这些组件可以是C 字符串、 std::string 类型、absl::string_view 类型、整型、浮点型、布尔型等等:
absl::string_view sv = " hello";
std::string str = " world";
const char *cstr = " abc ";
int i = 55;
double f = 123.44678;
std::string res = absl::StrCat(sv, str, cstr, i, f);
std::cout << res << std::endl;
整数转 16进制字符串
std::string s1;
int i = 255;
s1 = absl::StrCat("hello 0x", absl::Hex(i));
std::cout << s1 << std::endl;
StrAppend
StrAppend 用于在字符串尾部追加新的内容,新的内容可以是 std::string 类型、absl::string_view 类型、C 字符串、整数、浮点数、bool 值等等,在追加整数和浮点数时,其转换规则和 StrCat 一样:
std::string s1("hello ");
absl::StrAppend(&s1, "world");
std::cout << s1 << std::endl;
s1 = "hello ";
absl::string_view sv = "world";
absl::StrAppend(&s1, sv); // 追加 string_view 类型
std::cout << s1 << std::endl;
boost
boost::circular_buffer<int> cb(3);
// 放入元素
cb.push_back(1);
cb.push_back(2);
cb.push_back(3);
// 弹出尾部元素 3
cb.pop_back(); // 3 is removed.
// 弹出头部元素 1
cb.pop_front(); // 1 is removed.
// 现在只剩下元素 2
// 我们定义的缓冲区实际类型,每个 item 代表表格的一行数据
boost::circular_buffer<std::vector<GridData>> m_circularBuf;