自定义堆栈上 std::string 数据的输出
Customize the amout of std::string data on the stack
我想增加在堆栈上分配的std::string
数据量。默认情况下应该是 16 字节,我想要更多像 32 字节的东西。我不确定如何进行:默认的 16 字节是默认分配器的一部分,因此更改分配器就足够了?还是使用类似boost::small_vector
的东西会更快?
短字符串优化就是这样,一种优化。它根本不在标准中,这意味着这取决于各个标准库实现是否使用它以及是否公开对它的任何控制。请参阅标准库的文档。请注意,使用它会使您的代码不可移植。
我不知道有任何标准库实现公开了对此功能的任何控制。
这取决于您要支持哪些标准。在C++11之前,分配者是无国籍的。在 C++11 之后,提供的分配器对象的实例存储在分配器感知类中并控制其替换。问题是,对象本身不存储在自动存储中,或者至少不限于这种类型的存储。
因为 std::basic_string 的每个实现都有不同的大小和可用面积(例如 gcc 实现 - 只有 16 个字节,即 15 + 尾随零,clang 22 字节等( 并且您无法更改库类,要实际使用自定义 SSO,您可能必须在堆栈上手动提供存储并围绕 std::basic_string 创建类适配器。
相关文章:
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 使用 python 或 c ++ 中的 sql 根据输入数据输出输出示例
- 尝试从 txt 文件中读取两条数据并输出它们 [C++]
- 将多个效果与 libSox 链接并读取输出数据的正确方法
- 如何将函数的输出数据存储在文本文件中
- 如何从amd gpus的显示输出中获取图像数据
- 自定义堆栈上 std::string 数据的输出
- 如何从文本文件输出数据?(学生成绩单计划)
- 为什么我的数据/输出文件为空?
- C++:如何将数据输出到多个.dat文件
- C++:将存储在List容器中的数据输出到文本文件中
- .wav C++数据输出不正确
- C++:模拟餐饮公司计费程序-无法将错误数据输出到错误文件
- 使用iomanip将数据输出格式化为具有Qt的文本文件
- matPutVariable:尝试将数据输出到mat文件时出错(matrix::serialize::WrongSize
- 如何使用类似于gcc-xml的clang生成元数据输出
- 如何使用Python从UART Beaglebone获取数据输出
- GP635T gps传感器的数据输出
- 如何在Windows控制台中将数据输出到自定义流(3>4>等)?
- 流数据输出问题