배열(1차원 2차원)에서 요소를 제거하는 방법은 무엇입니까? - 페이지 7

 
Ilya Malev :


작업: 배열에서 요소를 제거합니다.

 
Алексей Тарабанов :

작업: 배열에서 요소를 제거합니다.

1차원 또는 2차원. 두 옵션에 대해 동일한 코드를 만들지 않기 때문에 문제의 답이 다릅니다. 더 정확하게는 코드를 만들 수 있고 만들 것이지만 배열의 차원 수를 미리 알지 않고는 코드를 호출할 수 없습니다. 당신은 프로그래머가 아니기 때문에 당신의 말로 판단하면 이것을 믿음으로 받아들일 것을 제안합니다.

 
Dmitry Fedoseev :
여기서 배열은 4차원을 초과하지 않습니다. 따라서 4가지 다른 기능을 작성할 수 있습니다.

그리고 8차원 더미가 약하다?

 
Ilya Malev :

이러한 방식으로 문제에 접근하면 다차원 배열 을 전혀 선언할 필요가 없습니다. 대신 다른 필드가 있는 구조의 배열을 사용해야 합니다. 그러나 질문은 다르게 지정됩니다. 이미 주어진 것으로 사용 가능한 임의의(미리 알 수 없는) 차원의 배열로 무엇을 할 수 있습니까?

그런 다음 막다른 골목에 도달했습니다 :( . 다기능 옵션에 대해 마음에 들지 않는 점은 무엇입니까?
 
Aliaksandr Hryshyn :
다기능 옵션에 대해 마음에 들지 않는 것은 무엇입니까?

매개변수 배열의 서로 다른 차원 마다 이름이 다른 함수에서 동일한 코드(당신이 말하는 코드)를 복제해야 한다는 사실

 
Dmitry Fedoseev :
여기서 배열은 4차원을 초과하지 않습니다. 따라서 4가지 다른 기능을 작성할 수 있습니다.

문제는 4개의 함수를 작성하는 것이 아니라 다른 유형에서 발생하는 것처럼 하나를 사용하는 배열에서 작동하지 않는다는 것입니다. 따라서 µl에서다차원 배열 (내장 유형 [])을 사용하지 않고 수행하는 것이 좋습니다.

 
Алексей Тарабанов :

그리고 8차원 더미가 약하다?

쉽게 구조를 통해.

 
그건 그렇고, 컴파일 단계에서 사용 가능한 유형 이름은 차원 수뿐만 아니라 매개 변수가 배열이라는 사실에 대해서도 알려줍니다. sizeof==52로 이것을 이해할 수 있지만. 그러나 다시 말하지만 차원 수에 대해서는 아무 말도 하지 않습니다. 따라서 #define을 통한 편리한 솔루션에 대한 옵션도 표시되지 않습니다. 다른 차원의 배열 을 전달할 수 있는 ArrayCopy 및 ArrayResize와 같은 내장 호출만 사용하는 모든 함수 코드가 정의에 채워지지 않는 한
 
Dmitry Fedoseev :

아, 그리고 오버로딩은 저장되지 않습니다:

그렇게 컴파일이 되나요?

 void z( int & z[], int shift){}; 
void z( int size_second_dimension, int & z[][], int shift){};
정확히 기억은 나지 않지만 두 번째 및 다음 차원은 동적일 수 없는 것 같습니다. 따라서 이러한 코드를 컴파일할 때 오류가 발생할 수 있습니다. 여기에서 변수 size_second_dimension은 두 번째 차원의 주어진 크기로 사용될 수 있으며 함수가 오버로드 되도록 허용합니다. 또한 ArrayRange()를 사용하여 차원을 결정할 필요가 없습니다.
 
Alexey Viktorov :

그렇게 컴파일이 되나요?

정확히 기억은 나지 않지만 두 번째 및 다음 차원은 동적일 수 없는 것 같습니다. 따라서 이러한 코드를 컴파일할 때 오류가 발생할 수 있습니다. 여기에서 변수 size_second_dimension은 두 번째 차원의 주어진 크기로 사용될 수 있으며 함수가 오버로드 되도록 허용합니다. 또한 ArrayRange()를 사용하여 차원을 결정할 필요가 없습니다.

컴파일되지만 그다지 흥미롭지 않습니다. z[][][]는 어떻습니까?

두 번째 이상의 차원은 동적일 수 없지만 함수는 두 번째 차원의 특정 크기에 맞게 조정할 필요가 없습니다. ArrayRange()를 통해 찾을 수 있습니다.

차원 수가 함수 오버로드를 허용하지 않으면 두 번째 차원 등의 크기는 절대 허용하지 않습니다. 예, 그래서 그것은 전혀 보편적이지 않기 때문에 완전히 흥미롭지 않습니다. 다른 함수 이름으로 작성하는 것이 더 쉽습니다.