【发布时间】:2015-02-10 12:14:41
【问题描述】:
从控制台输入读取一行字符到字符向量或数组的最快方法是什么(我更喜欢向量,因为行可能很长而且我不熟悉动态数组,所以普通数组可能会导致堆栈溢出)。我不知道我的字符行的大小,并且在字符(在另一行)之后有一些数字。我使用了字符串,但我的程序超出了我试图解决的问题的时间限制,因此我认为这可能是因为 char[] 在某些操作中比字符串快。我需要对我的行进行排序,并且我已经在使用 quickSort 算法。
【问题讨论】:
-
除了使用
std::getline,然后使用迭代器将字符串复制到向量中(为什么不将其保留为字符串?),您可以将std::copy与std::istreambuf_iterator和std::back_inserter一起使用。 -
您确定
std::string是瓶颈吗?我怀疑问题可能出在其他地方。 -
好吧,我希望将它从字符串更改为数组/向量,因为正如我所提到的,我的程序超出了时间限制,我认为我的程序中没有其他需要更改的地方(因为我是已经在使用 quickSort),除非像“不要对已经排序的地方进行排序”,但我想先尝试将字符串更改为 char[]。
-
你怎么知道瓶颈来自于此,而不是你为解决问题而编写的算法?
-
@Raizekas,您应该分析您的程序,而不是盲目地将代码片段更改为其他内容。
标签: c++ arrays string vector char