【发布时间】:2016-04-03 12:25:08
【问题描述】:
我需要设计一个具有两个主要功能的高效和可读类:
-
add_buffer(char* buffer)- 添加缓冲区。 -
char* read_all()- 获得一个大缓冲区,其中包含用户到目前为止添加的所有缓冲区(按顺序)。
例如:
char first_buffer[] = {1,2,3};
char second_buffer[] = {4,5,6};
MyClass instance;
instance.add_buffer(first_buffer);
instance.add_buffer(second_buffer);
char* big_buffer = instance.read_all(); // big_buffer = [1,2,3,4,5,6]
注意:这个问题有很多解决方案,但我正在寻找一个有效的解决方案,因为在现实生活中缓冲区会很大很大,我想节省很多复制和重新分配(就像 std::vector 所做的那样)。我也想要一个可读的 C++ 代码。
注意:现实生活中的问题是:我正在从一个 HTTP 请求中读取数据,该请求以分开的块发送给我。在所有块到达后,我想将整个数据返回给用户。
【问题讨论】:
-
除非您预先分配了大量内存,否则您可能无法避免多次复制重新分配。
-
是的,我知道。但我想尽量减少它。
-
输出缓冲区是否需要连续内存?
-
char first_buffer = [1,2,3];应该是什么意思? -
我正在从一个 HTTP 请求中读取数据,该请求以单独的块发送给我。在所有块到达后,我想将整个数据返回给用户。
标签: c++