C 表达式:向量下标出范围错误线:1733
C++ Expression: vector subscript out of range error Line:1733
当我尝试使用此函数以删除向量的项目nan
时在下面,unsorted
是一个充满字符串项目的向量,sanitised
是一个空的double
vector
...
1 void sensitising(vector <string> unsorted)
2 {
3 double x = 0;
4 for (int i = 0; i < sizeof(unsorted); i++)
5 {
6 x = stod(unsorted[i]);
7 if (isnan(x)==false)
8 {
9 sanitised.push_back(x);
10 }
11 }
12}
...
在第6行中丢下错误,抱怨向量下标出范围
如果第9行被cout << "is a number";
替换,则在正确打印所有项目后,将丢弃错误
is a number
is a number
is a number
...
知道为什么吗?谢谢!
sizeof
不会告诉您向量的长度。它告诉您实际对象的大小(字节)。
要获取存储在向量中的项目数,请使用unsorted.size()
。
请注意,在C 11及以后,您可以通过基于范围的循环更轻松地迭代向量:
for (const auto& str : unsorted) {
double x = stod(str);
if (!isnan(x)) {
sanitised.push_back(x);
}
}
如果要获取向量的大小(项目数量),则应使用vector.size()
而不是sizeof(vector)
,以返回以chars计数的内存中的矢量大小(C 标准))。
相关文章:
- 错误:未在此范围内声明'reverse'
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 错误:"imread"未在此范围内声明
- 我在范围内未声明的错误类有问题
- 未在此范围内声明错误 'xy'
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 运行时错误:矢量下标超出范围:正在检查空集
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- 在此范围内未声明错误"Clreol"
- "myClock"未在此范围错误中声明
- 包含来自另一个文件的函数会导致范围错误(openFoam)
- 构造中错误:未在此范围中声明"data"
- 使用基于范围的指针循环和向量时出现C++错误
- DEV C++ 第 69 行 [错误] ISO "for" 范围更改了"i"的名称查找 [-允许]
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 使用to_string、reverse、stoi组合的C++反转编号给出运行时错误实例超出范围
- 如何避免指针超出范围(多态性)的C++分段错误
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复范围内的字符串声明错误
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建