C 언어의 set 사용법

3110 단어 STL
다음은 set 컨테이너에 대한 간단한 요약입니다.
1. set 객체의 정의 및 초기화 set 객체의 정의 및 초기화 방법은 다음과 같습니다.
set s; set s(s1); set s(b, e); 그 중에서 b와 e는 각각 교체기의 시작과 끝의 표시이다.
예를 들면 다음과 같습니다.
#include 
#include 
#include 

using namespace std;

int main(){
        vector v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

        set s(v.begin(), v.end());
        printf("%d
", v.size());         printf("%d
", s.size());         return 0; }

주의: 키는 중복될 수 없습니다.
2. set에서 데이터의 삽입은 맵과 달리 set에서 데이터는 insert() 함수를 통해서만 삽입할 수 있다.
예를 들면 다음과 같습니다.
#include 
#include 
#include 

using namespace std;

int main(){
        vector v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

        set s;
        s.insert(v.begin(), v.end());
        set::iterator it;
        for (it = s.begin(); it != s.end(); it++){
                printf("%d\t", *it);
        }
        printf("
");         s.insert(10);         for (it = s.begin(); it != s.end(); it++){                 printf("%d\t", *it);         }         printf("
");         return 0; }

3. set에서 원소를 찾거나 읽거나 set에서 찾거나count() 함수와find() 함수를 사용할 수 있다. 이들의 차이는 이전 맵에서 정리되었다.
예를 들면 다음과 같습니다.
#include 
#include 
#include 

using namespace std;

int main(){
        vector v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

        set s;
        s.insert(v.begin(), v.end());
        set::iterator it;
        for (it = s.begin(); it != s.end(); it++){
                printf("%d\t", *it);
        }
        printf("
");         printf("%d
", s.count(9));         printf("%d
", *(s.find(9)));         return 0; }

4. set에서 원소를 삭제하고 set에서 원소를 삭제하는 데 사용되는 함수는 erase() 함수로 주로 다음과 같은 몇 가지 형식이 있다.
erase(k); erase(p); erase(b, e); 그 중에서 p가 표시하는 교체기가 가리키는 원소는 b와 e가 각각 교체기의 시작과 끝이다.
예를 들면 다음과 같습니다.
#include 
#include 
#include 

using namespace std;

int main(){
        vector v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

        set s(v.begin(), v.end());
        set::iterator it;
        for (it = s.begin(); it != s.end(); it++){
                if (*it == 5){
                        break;
                }
        }
        s.erase(it, s.end());

        set::iterator it_1;
        for (it_1 = s.begin(); it_1 != s.end(); it_1++){
                printf("%d\t", *it_1);
        }
        printf("
");         return 0; }

좋은 웹페이지 즐겨찾기