首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

C++17 在业务代码中最好用十个特性

std::string_view顾名思义是字符串“视图”,类成员变量包含两个部分:字符串指针和字符串长度,std::string_view 涵盖了 std::string 所有只读接口。...只有当对类型完全未知情况下,才应当使用std::any,比如动态类型文本解析或者业务逻辑中间层信息传递。...>代表一个多类型容器,容器中值是制定类型一种,是通用 Sum Type,对应 Rust enum。是一种类型安全union,所以也叫做tagged union。...与union相比有两点优势: 可以存储复杂类型,而 union 只能直接存储基础 POD 类型,对于如std::vector和std::string就等复杂类型则需要用户手动管理内存。...总结一下,c++17 新增三种类型给 c++带来了更现代更安全类型系统,它们对应使用场景是: std::any适用于之前使用void*作为通用类型场景。

2.5K20

c++17好用新特性总结

std::string_view顾名思义是字符串“视图”,类成员变量包含两个部分:字符串指针和字符串长度,std::string_view涵盖了std::string所有只读接口。...只有当对类型完全未知情况下,才应当使用std::any,比如动态类型文本解析或者业务逻辑中间层信息传递。...>代表一个多类型容器,容器中值是制定类型一种,是通用Sum Type,对应Rustenum。是一种类型安全union,所以也叫做tagged union。...与union相比有两点优势: 可以存储复杂类型,而union只能直接存储基础POD类型,对于如std::vector和std::string就等复杂类型则需要用户手动管理内存。...总结一下,c++17新增三种类型给c++带来了更现代更安全类型系统,它们对应使用场景是: std::any适用于之前使用void*作为通用类型场景。

3.1K10

C++17,标准库有哪些新变化?

首先看看 std::string_view. std::string_view std::string_view 代表一个字符串非所有权引用(即不负责管理引用字符串生命周期),他表示是一个字符序列...(可以是 C++ 中 string 或者 C风格字符串)"视图".C++17 中为不同字符类型提供了四种 string_view : std::string_view std::basic_string_view....答案其实很简单: 因为 std::string_view 可以高效进行复制!...而高效原因在于 std::string_view 创建成本很低, 仅需要两个数据:字符序列指针以及字符序列长度. std::string_view 以及他3个"兄弟"类型(指 std::wstring_view...:第8行代码创建了引用 C++ string std::string_view(strView变量), 而第16行代码中创建 std::string_view(strView2变量) 引用则是字符数组

1.2K10

C++那些事之string那些事

这无疑是对旧C风格“字符串”(使用以空字符结尾字符数组)一种改进。然而,C++标准库在C++17和C++20中引入了更有用组件,可以帮助你编写更高效代码。...>头文件,提供了一种轻量级只读替代方案,用于使用头文件中字符串类型。...此外,非常灵活,不仅可以将C++样式字符串转换为字符串视图,甚至可以将C样式字符串转换为字符串视图。...以下是演示std::string_view简单用法示例: #include #include #include void printString...在这个例子中,printString函数以std::string_view作为参数,这使得这个函数非常轻量级和灵活,因为没有制作任何字符串副本,这个函数可以通过传递C和C++样式字符串以各种方式使用

27110
领券