Базовый класс отсортированных контейнеров в C++

Есть ли в C++ общий базовый класс для отсортированных контейнеров, например std::set или std:map?

Фон: я хочу реализовать общую функцию, которая удаляет все элементы в контейнере, которых нет в другом контейнере. В качестве предварительного условия я хочу определить, что переданные контейнеры должны быть отсортированы.


person user1056903    schedule 11.10.2016    source источник
comment
en.cppreference.com/w/cpp/algorithm/set_difference   -  person LogicStuff    schedule 11.10.2016
comment
Чтобы ответить на ваш вопрос: нет, потому что стандарт не говорит об этом. Если есть, то это детали реализации, а наследование, вероятно, private.   -  person LogicStuff    schedule 11.10.2016
comment
если вы хотите создать общий код для шаблонов STL, скорее всего, ваш путь   -  person Hayt    schedule 11.10.2016


Ответы (2)


Есть ли в C++ общий базовый класс для отсортированных контейнеров, например std::set или std:map?

Нет, у них нет общего базового класса.

Вы можете использовать их определенные типы iterator, чтобы полагаться на общие черты в шаблонной реализации.

person πάντα ῥεῖ    schedule 11.10.2016

Не имеет общего класса.

Но у них есть похожий механизм: итераторы. Позвольте мне привести пример:

#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/

person amchacon    schedule 11.10.2016