Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 处理输入的速度:增加一个数组,或者计算输入,分配,然后读取_C++_Input_Runtime_Big O - Fatal编程技术网

C++ 处理输入的速度:增加一个数组,或者计算输入,分配,然后读取

C++ 处理输入的速度:增加一个数组,或者计算输入,分配,然后读取,c++,input,runtime,big-o,C++,Input,Runtime,Big O,基本上,我想知道从标准输入中处理输入的更快方法是什么: 方法一:声明一个任意大小的数组,读入数组,如果输入大于该大小,则分配一个两倍于该大小的新数组,将内容复制到新数组中,然后取消分配以前的数组 方法二:读取整个输入,并在读取时计算行数。将指针重置回输入的顶部,声明一个数组的长度和行数的大小,然后输入到该数组中。 一些背景: 我没有使用向量。请不要说只使用向量 他们不会键入输入,而是将输入从命令行重定向到文件。类似于/program

基本上,我想知道从标准输入中处理输入的更快方法是什么:

方法一:声明一个任意大小的数组,读入数组,如果输入大于该大小,则分配一个两倍于该大小的新数组,将内容复制到新数组中,然后取消分配以前的数组

方法二:读取整个输入,并在读取时计算行数。将指针重置回输入的顶部,声明一个数组的长度和行数的大小,然后输入到该数组中。 一些背景:

  • 我没有使用向量。请不要说只使用向量
  • 他们不会键入输入,而是将输入从命令行重定向到文件。类似于
    /program
  • 我知道第一种方法在空间上效率更低,但它比第二种方法快吗?如果是,减多少?方法2基本上需要2n个时间来完成。我想知道第一种方法是否会增加代码的运行时间
  • 两种方法都是O(n)。但是,您正在从stdin中读取数据,因此无法将其倒回开头,除非有什么东西已经在某处存储了数据,所以我不知道如何使用方法2


    您需要使用方法1。如果您可以使用
    realloc
    ,它甚至可能不需要进行任何复制。如果您担心额外的复制,您可以将这些项存储在一个缓冲区的链表中,缓冲区的大小以指数级增长,然后在最后创建一个数组,并只复制一次。

    io可能会慢下来。先用可能该死的。。。SO:-)中可能没有+2