C++에는 std :: set 또는 std : map 같은 정렬 된 컨테이너에 대한 공통 기본 클래스가 있습니까?C++에서 정렬 된 컨테이너의 기본 클래스
배경 : 다른 컨테이너에서 찾을 수없는 컨테이너의 모든 요소를 삭제하는 제네릭 함수를 구현하고 싶습니다. 전제 조건으로 전달 된 컨테이너를 정렬해야한다고 정의하고 싶습니다.
C++에는 std :: set 또는 std : map 같은 정렬 된 컨테이너에 대한 공통 기본 클래스가 있습니까?C++에서 정렬 된 컨테이너의 기본 클래스
배경 : 다른 컨테이너에서 찾을 수없는 컨테이너의 모든 요소를 삭제하는 제네릭 함수를 구현하고 싶습니다. 전제 조건으로 전달 된 컨테이너를 정렬해야한다고 정의하고 싶습니다.
C++에는 std :: set 또는 std : map과 같은 정렬 된 컨테이너에 대한 공통 기본 클래스가 있습니까?
아니요, 공통 기본 클래스가 없습니다.
특정 iterator
유형을 사용하여 템플릿 구현의 공통점에 의존 할 수 있습니다.
제네릭 클래스가 없습니다.
그러나 그들은 비슷한 메커니즘을 가지고 있습니다 : 반복기. 그것은 일반적인 컨테이너 기능이
#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/
http://en.cppreference.com/w/cpp/algorithm/set_difference – LogicStuff
당신의 질문 : 아니오, 표준은 그렇게 말하지 않기 때문에. 존재하는 경우 구현 세부 사항이며 상속은 아마도 '비공개'입니다. – LogicStuff
STL 템플릿을위한 일반적인 코드를 만들고 싶다면 가장 할 것 같습니다 – Hayt