> 백엔드 개발 > C++ > 본문

왜 `std::remove`는 C에서 요소를 삭제하는 대신 요소를 재배열합니까?

Barbara Streisand
풀어 주다: 2024-10-31 16:41:02
원래의
338명이 탐색했습니다.

  Why Does `std::remove` Rearrange Elements Instead of Deleting Them in C  ?

차이 이해: 지우기 vs. 제거

C 프로그래밍 영역에서 std::erase와 std::remove는 두 가지입니다. 컨테이너 수정과 관련하여 다양한 목적을 제공하는 고유한 기능입니다. 두 함수 모두 컨테이너에서 요소를 제거하는 데 사용할 수 있지만 동작이 다릅니다.

Std::remove: 요소 재배열과 삭제

Std:: 제거는 다양한 요소에 대해 작동하고 컨테이너 내에서 요소를 재배열하는 알고리즘입니다. 요소를 직접 삭제하지는 않지만 일치하지 않는 요소를 일치하는 요소 위로 이동합니다. 이 프로세스는 시퀀스 시작 부분에 일치하는 요소와 끝 부분에 일치하지 않는 요소의 클러스터를 생성합니다.

Std::erase: Deleting Elements

반면에 std::erase는 컨테이너에서 지정된 요소를 제거하여 크기를 효과적으로 줄이는 함수입니다. 다양한 반복자를 인수로 사용하고 제거하도록 표시된 요소를 포함하여 해당 범위 내의 모든 요소를 ​​삭제합니다.

출력 이해

제공된 코드 예제에서, 다음과 같은 관찰이 가능합니다. made:

  1. Std::remove: std::remove가 std::erase 없이 사용되면 단순히 요소를 재배열하고 벡터의 크기는 변경되지 않습니다. 따라서 벡터를 반복하면 2,2가 출력됩니다.
  2. Std::erase: std::erase를 std::remove와 함께 사용하면 제거됩니다. 일치하는 요소(이 경우 단일 발생 1)를 검색하고 그에 따라 벡터의 크기를 업데이트합니다. 결과적으로 출력에는 2.

Additional Notes on Std::remove

  1. Usage Outside of Erase-Remove만 표시됩니다. 숙어: std::remove는 일반적으로 삭제 작업의 일부로 삭제와 함께 사용됩니다. "지우기-제거 관용구"는 독립적으로 사용될 수도 있습니다. 제거 순서가 중요하지 않고 주요 목표가 컨테이너 내에서 일치하는 요소와 일치하지 않는 요소를 분리하는 것인 시나리오에서 유용합니다.
  2. 삭제하지 않는 이유: std::remove 삭제를 포함하지 않는 것은 임의의 순방향 반복자와 함께 작동하는 능력에서 비롯됩니다. 이러한 반복자는 요소를 삭제하는 기능이 없을 수 있으므로 std::remove의 기능이 제한됩니다.

위 내용은 왜 `std::remove`는 C에서 요소를 삭제하는 대신 요소를 재배열합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!