我有以下代码
std::vector<std::string> lines;
std::string currentLine;
while(std::getline(std::cin, currentLine)) {
// // option 1
// lines.push_back(std::move(currentLine));
// // option 2
// lines.push_back(currentLine);
}
我看到两者的成本不同
第一种方法将 clear
currentLine
,使得getline
需要为字符串分配一个新的缓冲区。但它将改为使用向量的缓冲区。第二种方法将
getline
能够重用缓冲区,并且需要为向量内字符串分配新的缓冲区。
在这种情况下,有没有“更好”的方法?编译器可以更有效地优化一种或其他方法吗?或者是否有聪明的字符串实现使一种选项比另一种更高效?