计算 C/C++ 行整数的有效方法
Efficient way to count ints in line C/C++
>我的任务是解决一个相当简单的问题,但我被困在一件事上
给定以下文件结构:
4
124 123 145 152
1400
13 23 51 24 1412 5151 52512 12412...
...
我应该对数据执行各种任务,但在对它做任何事情之前,我必须检查第一行中的 int 是否对应于第 2 行中的整数(第 3 行和第 4 行相同)问题是元素的数量可以达到 150 000,int 值介于 (1;2 000 000) 之间,因此使用 getline 可能会有问题 (afaik),因为它会占用大量资源。Cin 将忽略空格和,所以我永远不会知道何时结束我无法修改原始文件,我尝试使用尽可能少的资源。
嗯,
不确定我是否完全理解这个问题,但为什么不使用 getline 将包含 1400 个整数的行存储为字符串。之后使用 istringstream 确保您读取 1400 个整数。也许是这样的:
getline(cin, line);
while(iss >> n && i++ < numOfInts) {}
然后在外面确保 i == numOfInts。这样你永远不会真正存储 1400 个整数,你只会不断覆盖之前的整数
您可以创建一个自定义函数来获取整数值,如下所示:
int getints(){
int ctr = 0;
char ch;
int sign = 1, n=0;
while(ch!='n'){
while(ch==' ' || ch=='t')
ch = getchar();
if(ch=='-'){
sign = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9'){
n = n*10 + ch - '0';
ch = getchar();
}
n *= sign;
++ctr;
}
return ctr;
}
此函数将返回一行中扫描的整数数。只需检查一行中应该出现的整数数即可。它基本上跳过所有空格字符,并在找到换行符后终止输入。
相关文章:
- 在C++中初始化向量映射的最有效方法
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++变量的最有效方法
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 确保套装新鲜度的有效方法
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在C++事务之间存储大量字符数据的有效方法
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 检查两个向量是否并行的最有效方法
- 从浮点数中删除小数部分但保留类型的有效方法
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 创建字符串数组的有效方法
- 返回一个引用C++中另一个类对象的对象的有效方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 从std::map值中获取密钥的有效方法