c++ - std::basic_string_view 之间的区别和 std::span
问题描述
我正在解析二进制网络数据,我想让这个过程尽可能少分配。但现在我意识到有 2 个非常相似的概念对于我的情况可能都足够好,它们是std::basic_string_view<T>
和std::span<T>
。
所以我想知道。这两者之间有什么区别,使用其中一个有什么优势?一个明显的区别是可用性,std::basic_string_view
已经在 C++17 中,而std::span
在 C++20 中(但您可以使用“指南支持库”中的旧标准)。但是还有别的吗?它应该,因为否则他们不会都将其纳入标准。
解决方案
string_view
旨在用于文本数据。span
旨在与任意对象数组一起使用。虽然两者都不完全适合二进制数据,但string_view
显然不适用。
推荐阅读
- javascript - Sweet Alert:需要 Ajax 调用帮助
- c# - UWP EntityFrameworkCore 迁移问题
- java - 涉及包含 bean 'XXX' 的循环引用 - 考虑将工厂方法声明为静态以独立于其包含实例
- java - 从 Swagger 中删除额外的参数
- java - markRollbackOnly() 在 Camel 2.0 中不起作用
- javascript - Using map to reformat objects in an array to new element array
- azure - Azure SQL 数据库的连接日志
- typescript - Vuejs Google place autocomplete with typescript & vue-property-decorator
- postgresql - 如何在postgresql中查找函数、存储过程的数量?
- node.js - 如何在 Node.js 中解密三重 DES