随机整数列表

Random Integer List

本文关键字:列表 整数 随机      更新时间:2023-10-16

如果我有一个由一行空格分隔的整数列表(例如:50 34 1 3423 5 345),那么使它们每个都成为一个单独的整数变量的最佳方法是什么-使用cin收集整数列表

#include <iostream>
#include <vector>
#include <iterator>
std::vector<int> ints;
std::copy(std::istream_iterator<int>(cin), 
      std::istream_iterator<int>(), 
      std::back_inserter(ints));

。如果你真的需要显式逐行读取:

#include <sstream>
#include <iostream>
#include <vector>
#include <iterator>
std::string singleline;
std::istringstream iss; // out of loop for performance
while (std::getline(cin, singleline))
{
      iss.str(singleline);
      std::copy(std::istream_iterator<int>(iss), 
            std::istream_iterator<int>(), 
            std::back_inserter(ints));
}

一个istream_iterator<int>将重复应用operator>>(int&)到被引用的流(直到流结束)。默认情况下,这将静默地忽略空白,如果输入操作失败(例如遇到非整数输入),它将抛出异常

back_inserter是一个输出迭代器,可以用于所有支持.push_back操作的容器类型(如vector)。实际上STL算法中写的内容类似于

std::vector<int> ints;
while (iss>>myint)
{
     ints.push_back(myint);
}

根据她的回答,这里有一些更详细的方法(ahem)。

她使用的算法基本上是在内部完成这个。这个答案主要是为了清晰。

#include <iostream>
#include <vector>
int main()
{
   std::vector<int> myInts;
   int tmp;
   while (std::cin >> tmp) {
      myInts.push_back(tmp);
   }
   // Now `myInts` is a vector containing all the integers
}

生活例子。

查看strtok( )atoi( )的手册页