是C ++<<和>>经营者慢?这些运营商有哪些替代方案?

时间:2015-03-18 20:49:40

标签: c++ operators

我正在为大学做一个项目,我正在使用C ++。我使用std::cinstd::cout<<>>运算符来读取输入并显示输出。我的教授发布了一条公告,称不推荐>><<,因为它们很慢。

我们只需要读取整数,输入总是正确的(我们不需要验证它,我们知道它的格式,只需要阅读它)。如果不推荐<<>>,我们应该使用哪些替代方案?

2 个答案:

答案 0 :(得分:3)

对于cout,您可以使用putwrite

// single character
char character;
cout.put(character);

// c string
char * buffer = new char[size];
cout.write(buffer, size);

对于cin,您可以使用getreadgetline

// Single character
char ch;
std::cin.get(ch); 

// c string
char * buffer = new char[size];
std::cin.read(buffer, size);
std::cin.get(buffer, size);
std::cin.getline(buffer, size);

答案 1 :(得分:0)

当您需要处理大量数据(超过1E06项)时,担心C ++中的流提取运算符(&lt;&lt;&gt;&gt;)的速度是可以做的。对于较小的数据集,执行时间对于计算机和程序的其他因素可以忽略不计。

在您担心格式化I / O的速度之前,请让您的程序正常工作。检查算法的效率。检查算法的实现以提高效率。查看数据以提高效率。

流提取运算符的缓慢首先是从文本表示转换为内部表示,然后是实现。哎呀,如果您输入数据,请忘记任何优化。要加快文件读取速度,请组织数据以便于提取和翻译。

如果您仍然对效率感到恐慌,请使用二进制文件表示。应格式化文件中的数据,以便可以直接将其加载到内存中而无需任何翻译。此外,数据应以大块加载。

来自 Hitchhiker的银河指南 DON&#39; T PANIC