如何覆盖 STL 容器功能 [英] how to override STL container function

查看:38
本文介绍了如何覆盖 STL 容器功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有可能用相同的参数覆盖某些函数 stl 容器吗?我想用一些 if 内部函数完全覆盖 push_back.我试过了,但总是有关于该函数的错误/信息在向量中.

It's possible, that override some function stl container with the same paremeters? I want override exactly push_back with some if inside function. I try but, always have error/information about that function is in vector.

推荐答案

Overriding 意味着您将从 STL 容器继承.不要那样做!STL 容器不是为继承它们而设计的.

Overriding means that you are going to inherit from STL container. Don't do that! STL containers are not designed for inheriting from them.

作为一种选择,您可以将 std::vector 封装到一些包装类中并在推送之前执行其他功能,例如:

As an option, you might encapsulate std::vector into some wrapper class and perform additional functionality before pushing, something like:

template<typename T>
class Wrapper
{
public:
    template<typename U>
    void push(U&& e)
    {
         // some additional processing
         data.push_back(std::forward<U>(e));
    }

private:
    std::vector<T> data;
};

这篇关于如何覆盖 STL 容器功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆