我想知道的是,什么是性能开销。
我认为这是标准的输入分词方法。 具体来说:
每一行都会通过
频繁的
谢谢!
更新:
一个等价的实现
string line, word;
while (std::getline(cin, line))
{
istringstream istream(line);
while (istream >> word)
// parse word here
}
我认为这是标准的输入分词方法。 具体来说:
每一行都会通过
getline
,然后是istream
构造函数,最后是operator>>
用于每个单词的拷贝三次吗?频繁的
istream
构造和销毁会有问题吗?如果我在外部while
循环之前定义istream
,那么等效的实现是什么?谢谢!
更新:
一个等价的实现
string line, word;
stringstream stream;
while (std::getline(cin, line))
{
stream.clear();
stream << line;
while (stream >> word)
// parse word here
}
使用流作为本地堆栈,将行推入并弹出单词。这将消除先前版本中可能频繁的构造函数和析构函数调用,并利用流内部缓冲效应(这个观点正确吗?)。
替代方案可能是扩展std :: string以支持operator<<
和operator>>
,或扩展iostream以支持类似locate_new_line
的东西。 只是在这里进行头脑风暴。