c – STL容器列表,双端队列,向量等的基类是什么?
发布时间:2020-12-16 10:36:15 所属栏目:百科 来源:网络整理
导读:我想编写一个函数,可以使用STL通用列表,双端队列或向量,并在其中搜索密钥.这个函数的方法签名是什么?我们如何实现它? 我所知道的是,如果我们接受函数参数中的任何派生类,我们可以使用基本抽象类,假设所有相关的派生类都具有您的问题所需的函数. 编辑:我们
我想编写一个函数,可以使用STL通用列表,双端队列或向量,并在其中搜索密钥.这个函数的方法签名是什么?我们如何实现它?
我所知道的是,如果我们接受函数参数中的任何派生类,我们可以使用基本抽象类,假设所有相关的派生类都具有您的问题所需的函数. 编辑:我们不能在函数参数中传递容器的迭代器.如果我们能做到这一点很容易.它必须是一个容器. 我在想:假设’Container’是来自STL容器的抽象基类(根据下面的第一个答案,它不是). 模板 谢谢 解决方法
正如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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |