1
3
对于基于您已经拥有的代码更改,最简单的方法可能是给page一个采用非常量向量引用或指针的setter,以及
有些人(例如谷歌C++风格指南)希望引用参数是const,并希望您通过
或者,给page两个不同的构造函数:一个用于zip文件,另一个用于常规文件,并让它负责读取自己的数据。这可能是最干净的,它允许页面是不可变的,而不是在构造之后被修改。但实际上,您可能不希望这样做,因为正如您在注释中注意到的,将页面添加到容器中会复制页面。因此,修改页面以添加数据是有好处的
之后
它在容器中构造得很便宜:它避免了额外的拷贝,而不需要处理指针容器。尽管如此,
您可以找到或编写一个从ZipFile读取的流类,这样页面就可以只使用一个构造函数读取流来负责读取数据。或者可能不是整个流类,也可能只是您设计的一个接口,它将数据从流/zip/rar读取到指定的缓冲区中,而page可以将其内部向量指定为缓冲区。
最后,您可以“处理指针容器”。制作
A
|
2
2
使用
直接缓冲访问
|
3
2
使用std::vector保存图像数据是一个坏主意。为此,我将使用原始指针或共享指针。这样可以防止缓冲区被复制两次。 自从你 做 关心记忆,把所有的图像数据保存在记忆中对我来说也是个坏主意。更好的情况是将它封装到一个单独的类中。例如,ImageData。此类包含图像数据的行指针。该类可以首先用文件路径初始化,并在需要时从磁盘加载图像数据。 |
4
1
我要的是
例如,如果数据存储在目录中,则
至于这本书存储在zip文件中的情况,我正在猜测您使用的库是如何工作的。我觉得你用的是MiniZip,我不熟悉,但乍一看,通过MiniZip打开一个文件会给你一个处理方法。你把把手递给
这是非常简单的(我可能完全错误地使用了MiniZip,所以要小心),它还假定
|
5
0
您可以引入第三个组件来保存所有图像。这本书会把它填满,书页会从中读出来。如果你想限制访问,你可以关闭它,让书和网页的朋友。如果你有重复的图片(比如,每一页都有一个页脚和页眉,或者有些页面有一个徽标,或者其他什么),你可以把第三个组件变成一个飞锤,从而使它比你所追求的更有效率。 打开书本时,一定不要打开所有的页面。那可能很贵。让每个页面保存其图像的标识符(可能是文件路径),并且仅当您真正想要查看页面时才加载图像。 |
heltonbiker · 使用反应式编程写入打开文件流 7 年前 |
Gforse · 使用Filestream分析十六进制文件并行 7 年前 |
Bem · 在几分钟内将输入的字节数组流写入文件(C#) 7 年前 |
OpticalMagician · C++读取字符串,后跟两个双精度 8 年前 |
Perry · 为什么我无法使用此FileStream获取任何数据 8 年前 |
Hyun · C#我想更改分配的字节 8 年前 |
KDX2 · 运行文件://来自http://localhost/ 9 年前 |