C++矢量:使用矢量数组索引-1时断言
C++ vector: Assert when using vector array index -1?
从本质上讲,我的代码有一个无序单词的向量,一个存储它们的优先级(并有它们的位置)的向量2,一个优先级从最高到最低排序的向量3。
我想制作一个向量4,它首先包含优先级最高的字符串。bool警告是在重复优先级的情况下发出的。
但每次运行时都会出现断言错误。我需要帮助。
这是原始代码:
bool warning = true;
vector<string> vector4;
for (int a = 0; a < vector2.size(); a++)
{
for (int q = 0 ; q < vector2.size(); q++)
{
if (warning && vector2[a] == vector3[a-1] && a>0)
{
warning = false;
}
if (warning && vector2[q] == vector3[a])
{
vector4.push_back(vector1[q]);
}
warning = true;
}
}
以下是使用以下给出的答案修复后的代码:
bool warning = true;
vector<string> vector4;
for (int a = 0; a < vector2.size(); a++)
{
for (int q = 0 ; q < vector2.size(); q++)
{
if (a > 0 && warning && vector2[a] == vector3[a-1])
{
warning = false;
}
if (warning && vector2[q] == vector3[a])
{
vector4.push_back(vector1[q]);
}
warning = true;
}
}
解决了!
warning && vector2[a] == vector3[a-1]
会在第一个循环中给出断言,因为a == 0
,所以a-1 == -1
是无效索引。
在循环中执行:vector3[a-1]
在第一次迭代中,a=0给出向量3[-1]
这就是它断言的原因。
在我看来,在循环的第一个实例中,这个语句被击中了:if(warning&&vector2[a]==vector3[a-1])当a==0时-因此,在==的RHS上计算向量[-1]
相关文章:
- 数组索引的值没有增加
- 并行用于C++17中数组索引范围内的循环
- 数组索引重载错误
- 通过指针与数组引用扩展数组索引序列
- SIGSEGV, 分段错误. 而 printf() 数组索引的值
- 缓冲区溢出 - 数组索引越界(严重)
- 为什么C++数组索引值是有符号的,而不是围绕size_t类型构建的(或者我错了)
- 查找下一个具有真值C++的数组索引
- 在编译时自动生成用于稀疏数组索引的switch语句
- 在数组索引上引发异常
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 平衡数组索引,同时从左和右对数组求和
- 为什么C ,Devstudio,数组索引工作
- 如何对同一数组索引下的结构成员进行排序?
- 我想返回数组索引,而不是数组值
- C++相当于 Python 的:用于数组索引
- 分段错误:为什么这里的数组索引越界了
- 数组索引在地图上不是整数
- 根据用户输入的每个字母添加到数组索引
- C 数组索引