我可以用更少的代码行完成这项工作吗?
string input;
getline(cin, input);
istringstream ss(input);
vector<int> v;
int n;
while (ss >> n)
{
v.push_back(n);
}
编辑:我编辑的问题更具体。
答案 0 :(得分:0)
while循环 - 从输入流中读取并将值放入容器中 - 可以替换为std::copy
std::copy(std::istream_iterator<int>(ss), std::istream_iterator<int>(),
std::back_inserter(v));
其中std::istream_iterator<int>(ss)
表示输入的开始,std::istream_iterator<int>()
是输入的结束,最后std::back_inserter(v)
是值的位置(执行v.push_back())。
尽管如此,请记住,这会打破非数字输入。
<强>参数强>
第一个,最后一个 - 要复制的元素范围
d_first - 目标范围的开头。