大家好,提前感谢您的时间,
我定义了以下全局数组
int n_inactive=0;
long cc_no_issue[4]={0};
int issue[4];
我增加值
for(size_t k=0;k<contexts.size();k++)
{
if(issue[k]==0)
{
cc_no_issue[k]++;
}
else {
if(cc_no_issue[k]>=20)
{
n_inactive--;
}
cc_no_issue[k]=0;
}
if(cc_no_issue[k]==20)
n_inactive++;
}
然后我使用条件if&gt; =
if(cc_no_issue[disp_context_id]>=20)
之后,我的值一遍又一遍地增加,然后条件永远不会满足,我的程序就会中止。
当我使用条件if ==
时 if(cc_no_issue[disp_context_id]==20)
值保持不变。
请注意避免混淆disp_context_id是一个数字0-3
有人可以提供一些分析,说明为什么带有&gt; =条件的if语句会改变数组中元素的值
再次非常感谢。
编辑以下是我如何使用if语句
if(cc_no_issue[disp_context_id]>=10)
{
contexts_left.erase(contexts_left.begin()+current_context);
continue;
}
编辑:以下是我使用==时的一些值 7 10 3 9 10 13 6 12 2 10 56 8 4 0 58 10 0 1 10 7 3 0 13 10 10 2 1 17 0 8 7 10 2 10 9 12 3 11 10 13 3 29 28 10 0 134 10 115 0 2 10 18 1 10 18 26
现在当我将其更改为&gt; =时 2 6904 6904 6878 2 6904 6904 6878 0 6905 6905 6879 0 6905 6905 6879 0 6905 6905 6879 0 6906 6906 6880 0 6906 6906 6880 0 6906 6906 6880 0 6907 6907 6881 0 6907 6907 6881 0 6907 6907 6881 0 6908 6908 6882 0 6908 6908 6882 0 6908 6908 6882 0 6909 6909 6883 0 6909 6909 6883 0 6909 6909 6883 0 6910 6910 6884 0 6910 6910 6884 0 6910 6910 6884 0 6911 6911 6885 0 6911 6911 6885 0 6911 6911 6885 0 6912 6912 6886
差异很明显
@Rob,Rob感谢坚持我。由于有许多头文件和数据结构,我真的无法编写类似的可编译程序。我可以试着用语言告诉你
此cc_no_issue [4] = {0};数组最初定义为0 我还为问题数组问题分配了一个数组[4]
在代码的另一个函数中,我用它来递增Issue数组的元素0-3
然后在当前函数中检查元素0-3(如果它们中的任何一个等于0)然后递增cc_no_issue数组。
然后每当cc_no_issue [k]&gt; = 20
时,我将当前元素重置为0几行我想要在满足条件的情况下从数据结构中删除元素。 那个条件在一个while循环中
if(cc_no_issue[k]>=10)
{
use .erase to remove it from the array
continue;
}
我希望有助于澄清事情。
答案 0 :(得分:0)
如果context.size() > 4
,您将在cc_no_issue
的范围之外书写。这肯定是你的计划中止的一个原因。
您也可能超出issue
的范围。如果您取消引用了不可用的地址,那也会中止您的程序。