Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 인덱스 범위 [L – R]의 배열 요소를 삭제하시겠습니까?

<시간/>

먼저 원래 배열과 배열 요소의 삭제를 위한 배타적 범위를 정의하고 원래 배열 길이도 구해 보겠습니다 -

int arr[] = { 2,4,6,8,10,12,14,16,18,20};
int L = 2, R = 6;
int length = sizeof(arr) / sizeof(arr[0]);

이제 배열을 반복하고 인덱스 위치(i)가 L 또는 R보다 크면 인덱스 값(i)이 범위 L과 범위 사이에 있으면 배열 요소의 위치를 ​​이동(삭제)하는 데 사용할 변수 k를 증가시킵니다. R. 또한 주어진 배열의 새로운 길이는 k가 됩니다.

int k = 0;
for (int i = 0; i < length; i++) {
   if (i <= L || i >= R) {
      arr[k] = arr[i];
      k++;
   }
}

예시

주어진 인덱스에서 배열 요소를 삭제하는 방법을 더 잘 이해하기 위해 다음 구현을 살펴보겠습니다.

#include <iostream>
using namespace std;
int main() {
   int arr[] = { 2,4,6,8,10,12,14,16,18,20};
   int L = 2, R = 6;
   int length = sizeof(arr) / sizeof(arr[0]);
   int k = 0;
   for (int i = 0; i < length; i++) {
      if (i <= L || i >= R) {
         arr[k] = arr[i];
         k++;
      }
   }
   length=k;
   for (int i = 0; i < length; i++)
      cout << arr[i] << " ";
   return 0;
}

출력

위의 코드는 다음 출력을 생성합니다 -

2 4 6 14 16 18 20