私は次のコードを持っています
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);
}
2つのコストが異なると思います
最初のアプローチはクリアされ
currentLine
、getline
文字列に新しいバッファを割り当てる必要があります。ただし、代わりにベクターのバッファーを使用します。2番目のアプローチでは
getline
、バッファーを再利用できるようになり、ベクトル内文字列に新しいバッファー割り当てが必要になります。
そのような状況では、「より良い」方法はありますか?コンパイラーは、1つまたは他のアプローチをより効率的に最適化できますか?または、一方のオプションをもう一方のオプションよりもはるかにパフォーマンスの高いものにする巧妙な文字列の実装はありますか?