2016-10-11 9 views
0

C++에는 std :: set 또는 std : map 같은 정렬 된 컨테이너에 대한 공통 기본 클래스가 있습니까?C++에서 정렬 된 컨테이너의 기본 클래스

배경 : 다른 컨테이너에서 찾을 수없는 컨테이너의 모든 요소를 ​​삭제하는 제네릭 함수를 구현하고 싶습니다. 전제 조건으로 전달 된 컨테이너를 정렬해야한다고 정의하고 싶습니다.

+7

http://en.cppreference.com/w/cpp/algorithm/set_difference – LogicStuff

+0

당신의 질문 : 아니오, 표준은 그렇게 말하지 않기 때문에. 존재하는 경우 구현 세부 사항이며 상속은 아마도 '비공개'입니다. – LogicStuff

+1

STL 템플릿을위한 일반적인 코드를 만들고 싶다면 가장 할 것 같습니다 – Hayt

답변

2

C++에는 std :: set 또는 std : map과 같은 정렬 된 컨테이너에 대한 공통 기본 클래스가 있습니까?

아니요, 공통 기본 클래스가 없습니다.

특정 iterator 유형을 사용하여 템플릿 구현의 공통점에 의존 할 수 있습니다.

1

제네릭 클래스가 없습니다.

그러나 그들은 비슷한 메커니즘을 가지고 있습니다 : 반복기. 그것은 일반적인 컨테이너 기능이

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
#include <vector> 
#include <list> 

using namespace std; 

template<class InputIterator> 
void printContainer(InputIterator begin_it,InputIterator end_it) 
{ 
    while (begin_it != end_it) 
    { 
     cout << (*begin_it) << ' '; 
     begin_it++; 
    } 

    cout << endl; 
} 

int main() 
{ 
    vector<int> vector_data; 
    list<int> list_data; 

    srand(time(0)); 

    for (int i = 0;i < 5;i++) 
    { 
     int n = rand() % 10; 
     vector_data.push_back(n); 
     list_data.push_back(n); 
    } 

    printContainer(vector_data.begin(),vector_data.end()); 
    printContainer(list_data.begin(),list_data.end()); 
} 

확인 알고리즘 라이브러리 : 나를 예를 넣어 보자 대답하기 위해 http://www.cplusplus.com/reference/algorithm/