c++中排序容器的基类

Base class of sorted containers in C++

本文关键字:基类 排序 c++      更新时间:2023-10-16

c++是否有像std::set或std:map这样的有序容器的公共基类?

背景:我想实现一个泛型函数,删除在另一个容器中找不到的容器中的所有元素。作为先决条件,我想定义传递的容器必须排序。

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/