在处理具有正面和负面元素的数组时遇到了一个问题。我需要将数组中的元素分类为正数还是负数,我的代码如下所示:
int main(){
vector <int> neg;
vector <int> pos;
vector <int> zero;
int a[6]={-1,0,1,2,-1,-4};
for(int i=0; i<6; ++i){
if(a[i]>0)
pos.push_back(a[i]);
if(a[i]=0) zero.push_back(a[i]);
if(a[i]<0)
neg.push_back(a[i]);
}
}
但是,当我打印neg.size()时,它似乎是0.我无法弄清楚为什么这样......有人能给我一些暗示吗?感谢。
答案 0 :(得分:4)
if(a[i]=0) zero.push_back(a[i]);
应该是
if(a[i]==0) zero.push_back(a[i]);
operator=
是赋值运算符,而operator==
是比较运算符。
答案 1 :(得分:1)
if(a[i]=0) zero.push_back(a[i]);
在这里,您使用赋值运算符=
而不是等于运算符==
。因此,a[i]
会被分配到0
,因此以下a[i]<0
永远不会成立。
除此之外,在我看来,在这种情况下使用else if
是一种更好的编码风格:
for(int i = 0; i < 6; ++i){
if (a[i] > 0)
pos.push_back(a[i]);
else if (a[i] == 0)
zero.push_back(a[i]);
else if (a[i] < 0)
neg.push_back(a[i]);
}
答案 2 :(得分:0)
该行
if(a[i]=0) zero.push_back(a[i]);
将a[i]
设置为0
。在此之后,if ( a[i] < 0 )
始终为false。因此,您在neg
中无法获得任何内容。