abseil cpp 基本用法 - housekeeper-software/tech GitHub Wiki
abseil-cpp 是 google开源的c++ 基础库: github: https://github.com/abseil/abseil-cpp url: https://abseil.io/
absl::flat_hash_map : 对应于 std::unordered_map
absl::flat_hash_set : 对应于 std::unordered_set
absl::string_view:对应于 std::string_view(c++ 17),absl::string_view在c++ 14上可以提供,如果编译版本为17则用 std::string_view
1. 迭代删除
stl中的实现:
for (auto it = c.begin(); it != c.end();)
{
if (it->first % 2 != 0)
it = c.erase(it);
else
++it;
}
absl中的实现:
for (auto it = map.begin(); it != map.end();) {
auto current = it++;
if (current->second % 2) {
DLOG(INFO) << "erase:" << current->second;
map.erase(current);
}
}
*******abls erase返回 void **********
string_view 不包含字符串本身,只有字符串的指针和长度,因而它的声明周期要短与字符串本身,比如(std::string).
1. 定义一个常量: constexpr absl::string_view kErrString = "ERR";
2. 传参:void SendReply(absl::string_view message),这里不用引用或者指针,应该传值(因为string_view非常轻量)
3. 由字符缓冲区构造: absl::string_view data(reinterpret_cast<const char *>(msg.data()), msg.size());
其他的:
std::vector<absl::string_view> v = absl::StrSplit(message, ':');
absl::EqualsIgnoreCase(v[0], kGetString)
使用string_view 则不会出现 std::string的中间临时构造过程,效率非常高。