c – STL容器列表,双端队列,向量等的基类是什么?

我想编写一个函数,可以使用STL通用列表,双端队列或向量,并在其中搜索密钥.这个函数方法签名是什么?我们如何实现它?

我所知道的是,如果我们接受函数参数中的任何派生类,我们可以使用基本抽象类,假设所有相关的派生类都具有您的问题所需的函数.

编辑:我们不能在函数参数中传递容器的迭代器.如果我们能做到这一点很容易.它必须是一个容器.

我在想:假设’Container’是来自STL容器的抽象基类(根据下面的第一个答案,它不是).

模板
bool搜索(std :: Container C,T& key);

谢谢

解决方法

正如SergeyA在他的回答中提到的,C的STL没有多态容器(与 Java或C#接口相反).

关于您请求的功能签名,请查看STL<算法>头.有许多函数在某些数据上运行,使用两个指针(迭代器)到数据块的开头和结尾.例如,

template< class InputIt,class T >
InputIt find( InputIt first,InputIt last,const T& value );

在[first,last]中搜索某些值.

如果你真的想将整个容器传递给函数,那么你也会写同样的东西

template<class Container,class T>
bool Search(const Container& container,const T& value)
{
    for (auto iterator = container.begin(); iterator != container.end(); ++iterator)
    {
        if (*iterator == value)
            return true;
    }
    return false;
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...