luotexia2310
April 12, 2024 00:37:31
vector pos = point(0, "P", 6);
int npts = nearpoints(0, pos, 1.5);
printf("%s\n", npts);
foreach(int npt; npts){
if(npt == 6 || npt == 1){
removevalue(npts, npt);
}
}
printf("%s\n", npts);
===========result:
{6, 1, 5, 7, 11}
{1, 5, 7, 11}
Why point 1 cannot be removed
animatrix_
April 12, 2024 11:24:12
Hi,
You shouldn't modify the array you are looping over when using foreach loop. You don't have to loop over the elements like that to remove values. Just do like this:
removevalue ( npts, 6 );
removevalue ( npts, 1 );
Or loop over the elements to remove:
int elements [ ] = { 6, 1 };
foreach ( int element; elements )
removevalue ( npts, element );
Tanto
April 12, 2024 11:24:32
You remove 6, array is now {1,5,7,11}, next iteration is performed on the second element of the array, 5, so 1 is never iterated upon.
luotexia2310
April 14, 2024 04:06:40
动画师_
Hi,
You shouldn't modify the array you are looping over when using foreach loop. You don't have to loop over the elements like that to remove values. Just do like this:
removevalue ( npts, 6 );
removevalue ( npts, 1 );
Or loop over the elements to remove:
int elements [ ] = { 6, 1 };
foreach ( int element; elements )
removevalue ( npts, element );
I understand, thank you very much!