【发布时间】:2014-09-29 17:48:41
【问题描述】:
我有一些代码可以进行一些计算,然后返回很多(数千甚至数十万)vectors 或 vectors 或 doubles(矩阵)。这些值已经四舍五入到最接近的整数,并且永远不会超过一个字节的最大大小。矩阵将被展平为一维vectors,然后作为二进制数据写入文件。但是,我不想将这些值存储为doubles,因为它们会占用更多空间。它们需要存储为chars,但返回它们的代码总是会给我双打,所以我想知道将所有doubles 转换为chars 的最快方法是什么。
我正在寻找一种将vectors 的一种类型转换为另一种类型的方法,因为向量很容易写入文件。
【问题讨论】:
-
这些值有签名吗?
-
向量是连续存储的。 double 比 char 有更多的空间。您不能将
vector<double>就地转换为vector<char>您最好的选择可能是提前将您的向量简单地返回为vector<char>。无论哪种方式,您都需要进行一些复制。 -
@Cameron 是的,他们已签名。
-
@AndyG 是的,我知道这一点。不能真正更改返回
doubles的代码,因为它被许多其他期望doubles的方法使用。或许我应该写一个charversion 的方法? -
双打的允许范围是多少?是 0 到 256 吗?还是 -128 到 127?还是什么?
标签: c++ vector casting stdvector