C++ 处理输入的速度:增加一个数组,或者计算输入,分配,然后读取
基本上,我想知道从标准输入中处理输入的更快方法是什么: 方法一:声明一个任意大小的数组,读入数组,如果输入大于该大小,则分配一个两倍于该大小的新数组,将内容复制到新数组中,然后取消分配以前的数组 方法二:读取整个输入,并在读取时计算行数。将指针重置回输入的顶部,声明一个数组的长度和行数的大小,然后输入到该数组中。 一些背景:C++ 处理输入的速度:增加一个数组,或者计算输入,分配,然后读取,c++,input,runtime,big-o,C++,Input,Runtime,Big O,基本上,我想知道从标准输入中处理输入的更快方法是什么: 方法一:声明一个任意大小的数组,读入数组,如果输入大于该大小,则分配一个两倍于该大小的新数组,将内容复制到新数组中,然后取消分配以前的数组 方法二:读取整个输入,并在读取时计算行数。将指针重置回输入的顶部,声明一个数组的长度和行数的大小,然后输入到该数组中。 一些背景: 我没有使用向量。请不要说只使用向量 他们不会键入输入,而是将输入从命令行重定向到文件。类似于/program
/program
您需要使用方法1。如果您可以使用
realloc
,它甚至可能不需要进行任何复制。如果您担心额外的复制,您可以将这些项存储在一个缓冲区的链表中,缓冲区的大小以指数级增长,然后在最后创建一个数组,并只复制一次。io可能会慢下来。先用可能该死的。。。SO:-)中可能没有+2