다음을 통해 공유


알고리즘 (현대 C++)

현대 C++ 프로그래밍에 대 한 알고리즘을 사용 하는 좋습니다는 표준 템플릿 라이브러리 (STL).몇 가지 중요 한 예는 다음과 같습니다.

  • for_each를 통과 하는 기본 알고리즘입니다.(또한 transform 제자리에서 not 의미에 대 한 합니다.)

  • find_if을 검색 하는 기본 알고리즘입니다.

  • sortlower_bound, 정렬 및 검색 알고리즘 다른 기본.

비교자를 작성 하려면 엄격한 사용 < 를 사용 하 고 라는 람다 때 수행할 수 있습니다.

auto comp = []( const widget& w1, const widget& w2 )
      { return w1.weight() < w2.weight(); }

sort( v.begin(), v.end(), comp );

auto i = lower_bound( v.begin(), v.end(), comp );

루프

가능 하면 범위 기반 사용 for 루프 알고리즘 호출, 또는 손으로 쓴 루프 대신 합니다.copytransform, count_if, remove_if, 및 이와 같은 나머지는 버그 없이 코드를 작성 하기 쉽도록 자신의 의도 알 수 있으므로 필기 루프 보다 훨씬 더 나은입니다.많은 STL 알고리즘을 보다 효율적 구현을 최적화도.

대신 기존 C++ 처럼이.

for( auto i = strings.begin(); i != strings.end(); ++i ) {
  :::
  :::
}

auto i = v.begin();

for( ; i != v.end(); ++i ) {
  if (*i > x && *i < y) break;
}

현대 C++를 다음과 같이 사용 합니다.

for_each( begin(strings), end(strings), []( string& s ) {
  :::
  :::
} );
auto i = find_if( begin(v), end(v),  [=](int i) { return i > x && i < y; }  );

Hh438471.collapse_all(ko-kr,VS.110).gifFor 루프 범위 기반

범위 기반 for 루프 되는 C + + 11 언어 기능, STL 알고리즘입니다.하지만 루프에 대 한 언급이이 토론에 필요 합니다.범위 기반 for 루프의 확장 된는 for 키워드와 값의 범위 내에서 반복 하는 루프를 작성할 수 있는 편리 하 고 효율적인 방법을 제공 합니다.STL 컨테이너, 문자열 및 배열 되어에 대 한 기본 범위를 기반으로 for 루프.사용자 정의 형식의 새 반복 구문을 사용 하려면 다음과 같은 지원을 추가 합니다.

  • A begin 구조체의 시작 부분에 반복기를 반환 하는 메서드 및 end 구조의 끝에 반복기를 반환 하는 메서드.

  • 이러한 메서드는 반복기를 지원: operator*, operator!=, 및 operator++ (접두사 버전).

이러한 메서드는 함수를 독립 실행형 또는 구성원 수 있습니다.

참고 항목

기타 리소스

C + + (현대 C++)를 다시 시작

C + + 언어 참조

표준 C++ 라이브러리 참조