如何覆盖 STL 容器函数
how to override STL container function
有可能使用相同的参数覆盖某些函数 stl 容器吗? 我想用一些内部功能if
完全push_back
覆盖。 我尝试,但是,总是有关于该函数的错误/信息在矢量中。
覆盖意味着您将从STL容器继承。别这样!STL容器不是为从它们继承而设计的。
作为一种选择,您可以将std::vector封装到某个包装类中,并在推送之前执行其他功能,例如:
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 容器的继承是一种糟糕的方法。向量不应该有派生类。向量和虚拟析构函数中没有虚拟方法(最后一个可能会产生很多问题)。 您可以创建自己的类并使用向量作为成员。
你不能那样做。std
库中的大多数类都不是要继承的。但是,与其"从内部"更改它,不如"从外部"进行更改,例如:
template<typename T> myPush(std::vector<T>& v,T element) {
if (someCondition()) { v.push(element); }
}
或者,您可以这样做:
struct MyCustomVector {
void my_push( T element);
/* pulic or private: */ // depends on what you want/need
std::vector<T> vect;
};
相关文章:
- 有没有办法捕获 STL 函数未被赋予正确参数的异常?
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 不能对类型化模板使用 STL 函数
- 如何使用 binary_search STL 函数在嵌套类中搜索整数?
- C++ 如何将参数传递给 STL 函数
- STL 函数和函数类型与函数指针类型
- 重载 STL 函数
- 为什么 STL 函数使用节点的颜色来计算 std::map 节点前身
- 我可以期望某些 STL 函数实现是可自动矢量化的吗?
- 指针类型上的 STL 函数对象
- 寻找一种更有效的方法来使用 STL 函数检查字符串是否为回文
- 为什么lambda函数用于stl函数,例如sort(),c 中的max_element()函数以两个参数为输入
- 为什么此 stl 函数调用会导致不正确的布尔计算
- 有没有STL函数可以得到两个C++向量的笛卡尔乘积
- 如何测试 C++ STL 函数的成功或失败(在 Microsoft Visual C++ 6.0 中)
- STL 函数类似于排序
- 无论CRT版本如何,这都是在库中提供STL函数的有效方法吗
- 处理容器的每个成员的stl函数是否可以接受外部参数
- STL函数,用于测试值是否在某个范围内
- 如何"count_if"字符串的 -STL 函数?