Vladimir Pastushak :
1,2,3,6,9,5,6,3,25,6,8,7,4 유형의 데이터 세트를 포함하는 배열이 있습니다. 예를 들어 3의 값은 다음과 같아야 합니다. 삭제되고 출력은 3과 빈 공간이 없는 동일한 배열이 됩니다. ...
정크 값 배열을 지우는 가장 빠른 방법을 찾고 있습니다...
예가 떠오른다
더 저렴하고 빠른 방법이 있습니까?
사이클에서 ArrayResize를 제거 하고 (각 LONG에 대해 싸우는 경우 조건을 확인하고 마지막에 단일 크기 조정을 수행하십시오)
그러나 이것은 일반적으로 나중에 대량으로 수행할 수 있거나 전혀 수행하지 않을 수 있는 모든 것을 주기에서 제거하는 것입니다.
int ArrayDeleteEmpty(const int del, int &one[]) { int i = ArrayBsearch(one, del), y = ArraySize(one)-1; if(one[i] != del) return 0; for(; i<y; i++) one[i] = one[i+1]; ArrayResize(one, y); return y; }
다음은 옵션입니다.
template < typename T> int arrayFilter(T &data[], const T value) { int dst = 0 , src = 0 ; for (; src < ArraySize (data); src++) { if (data[src] != value) { if (dst != src) { data[dst] = data[src]; } dst++; } } if (dst < src) { ArrayResize (data, dst); // will only work with dynamic array } return dst; } void OnStart () { long array[] = { 1 , 2 , 3 , 6 , 9 , 5 , 6 , 3 , 25 , 6 , 8 , 7 , 4 }; ArrayPrint (array, 0 , NULL , 0 , arrayFilter< long >(array, 3 )); }
필터링된 배열의 요소 수를 반환합니다. 동적이면 자동으로 크기를 줄일 수 있습니다.
Stanislav Korotky :
다음은 옵션입니다.
필터링된 배열의 요소 수를 반환합니다. 동적이면 자동으로 크기를 줄일 수 있습니다.
조금 더(몇 개의 지구 직경) 그리고 우리는 기능에 올 것입니다 :-)
타겟 설정 [ $source 필터 [ 람다 x { expr $x !=3 } ] ]
이것은 tcl이며 lisp에서는 더 짧습니다.
가장 빠른 방법은 ArrayCopy() 를 사용하고 제거할 요소를 이동하지 않도록 역순으로 반복하는 것입니다.
Dmitry Fedoseev :
가장 빠른 방법은 ArrayCopy()를 사용하고 제거할 요소를 이동하지 않도록 역순으로 반복하는 것입니다.
가장 빠른 방법은 ArrayCopy()를 사용하고 제거할 요소를 이동하지 않도록 역순으로 반복하는 것입니다.
문자열을 포함하는 구조의 배열이 있을 수 있으므로 적합하지 않습니다.
하나는 42개, 다른 하나는 6개, 세 번째는 30개. 이런 질문과 답변에 도대체 어떤 내용이 들어있을지 상상이 안 갑니다.
TheXpert :
하나는 42개, 다른 하나는 6개, 세 번째는 30개. 이런 질문과 답변에 도대체 어떤 내용이 들어있을지 상상이 안 갑니다.
하나는 42개, 다른 하나는 6개, 세 번째는 30개. 이런 질문과 답변에 도대체 어떤 내용이 들어있을지 상상이 안 갑니다.
어리석은 질문, 그것은 묻는 질문이 아닙니다.
문제를 해결할 수 있는 몇 가지 옵션이 있지만 계속해서 더 나은 솔루션을 찾고 다른 사람들로부터 배웁니다.
하나님께 감사드립니다 :) ... 제품과 솔루션이 하나뿐입니다.
1,2,3,6,9,5,6,3,25,6,8,7,4 유형의 데이터 세트를 포함하는 배열이 있습니다. 예를 들어 3의 값은 다음과 같아야 합니다. 삭제되고 출력은 3과 빈 공간이 없는 동일한 배열이 됩니다. ...
정크 값 배열을 지우는 가장 빠른 방법을 찾고 있습니다...
예가 떠오른다
더 저렴하고 빠른 방법이 있습니까?