基本上,我的代码包含无序单词的向量,vector2存储它们的优先级(并且具有它们的位置),vector3的优先级从最高到最低排序。
我想首先使用具有最高优先级的字符串制作向量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;
}
}
解决!
答案 0 :(得分:2)
warning && vector2[a] == vector3[a-1]
会在第一个循环中给出断言,因为a == 0
,所以a-1 == -1
是无效索引。
答案 1 :(得分:2)
执行:vector3 [a-1]
在第一次迭代中a = 0给出vector3 [-1]
这就是它断言的原因。
答案 2 :(得分:1)
在你的循环的第一个实例中,我觉得这个语句是命中的: if(警告&amp;&amp; vector2 [a] == vector3 [a-1]) 当a == 0时 - 因此你在==
的RHS上评估向量[-1]