stl 상용 알고리즘(Algorithms)소개(stl 정렬 알고리즘,비 변수 형 대기 열)

알고리즘:클 러 스 터 내의 요 소 를 처리 하 는 데 사 용 됩 니 다.그것들 은 서로 다른 목적 에서 검색,정렬,수정,그 요 소 를 사용 할 수 있다.sort(정렬),copy(복사)와 같은 여러 가지 방법 으로 메모 리 를 처리 하 는 데 사용 되 는 행동 이나 기능 입 니 다.
알고리즘 은 템 플 릿 함수 에 의 해 나타 납 니 다.이 함수 들 은 용기 류 의 구성원 함수 가 아니 라 독립 된 함수 입 니 다.STL 용기 에 도 사용 할 수 있 고 일반적인 C+배열 등에 도 사용 할 수 있 습 니 다.
헤더 파일:\#include
STL 의 일반적인 알고리즘 중 4 가지 기본 적 인 알고리즘 이 있 습 니 다.
1)변 서 형 대기 열 알고리즘:용기 안의 데 이 터 를 변경 할 수 있 습 니 다.2)비 변수 형 대기 열 알고리즘:용기 안의 데 이 터 를 처리 하고 그들 을 바 꾸 지 않 는 다.3)정렬 값 알고리즘:용기 의 값 을 정렬 하고 통합 하 는 알고리즘 을 포함 하고 이 진 검색 알고리즘 도 포함 합 니 다.4)유 니 버 설 수치 알고리즘:이 알고리즘 은 많 지 않 고 전문 분야 에서 유용 한 산술 작업 과 관련 되 며 헤드 파일에 독립 적 으로 포함 되 어 있 습 니 다.
STL 의 알고리즘 은 STL 용기 만 을 겨냥 한 것 이 아니 라 일반 용기 에 도 적용 된다

//

#include <iostream>
#include <algorithm>
#include <iterator>

// ostream_iterator

using namespace std;

int main(void)
{   int arr0[6]= {1,12,3,2,1215,90};
    int arr1[7];
    int arr2[6]= {2,5,6,9,0,-56};

    // aar arr1
    copy(arr0,(arr0+6),arr1);

    cout<<"arr0[6] copy to arr1[7],now arr1: "<<endl;
    for(int i=0; i<7; i++)  
    cout<<" "<<arr1[i];

    // ,

    // arr

    reverse(arr0,arr0+6);
    cout<<"
"<<"arr reversed ,now arr:"<<endl;

    //
    copy(arr0,arr0+6,ostream_iterator<int>(cout, " "));

    // arr0 arr2

    swap_ranges(arr0,arr0+6,arr2);

    cout<<"
"<<"arr0 swaped to arr2, and now arr0's content:"<<endl;
    copy(arr0,arr0+6,ostream_iterator<int>(cout, " "));

    cout<<"
"<<"arr2:"<<endl;
    copy(arr2,arr2+6,ostream_iterator<int>(cout, " "));

    return 0;
}

비 변화 형 대기 열 알고리즘(구성원 통계 계산,검색 일치)

//

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(void)
{   int a[10]= {12,31,5,2,23,121,0,89,34,66};

    vector<int> v1(a,a+10);
    vector<int>::iterator result1,result2; //result1 result2

    result1=find(v1.begin(),v1.end(),2); // v1 2,result1 v1 2

    result2=find(v1.begin(),v1.end(),8); // v1 8,result2 v1.end()

    cout<<result1-v1.begin()<<endl;  //3-0=3 4-1=3, 3
    cout<<result2-v1.end()<<endl;  //10-10=0;

    int b[9]= {5,2,23,54,5,5,5,2,2};

    cout<<"a[10]={12,31,5,2,23,121,0,89,34,66};
";
    cout<<"b[9]={5,2,23,54,5,5,5,2,2};
";

    vector<int> v2(a+2,a+8);
    vector<int> v3(b,b+4);

    result1=search(v1.begin(),v1.end(),v2.begin(),v2.end());

    cout<<*result1<<endl;
    // v1 v2,result1 v2 v1

    result1=search(v1.begin(),v1.end(),v3.begin(),v3.end());

    cout<<*(result1-1)<<endl;
    // v1 v3,result v1.end(), v1 66

    vector<int> v4(b,b+9);

    int i=count(v4.begin(),v4.end(),5);
    int j=count(v4.begin(),v4.end(),2);


    cout<<"there are "<<i<<" members in v4 equel to 5"<<endl;
    cout<<"there are "<<j<<" members in v4 equel to 2"<<endl;


    // v4 5,2
    return 0;
}

정렬 알고리즘

좋은 웹페이지 즐겨찾기