我正在构建一个带有 std::vector
的自定义 vector 类作为其唯一成员,并通过重载 +、- 等向其添加各种数学函数。
我这样做是为了直接访问 vector 元素:
template <typename T, int N>
class Vector{
std::vector<T> v;
public:
Vector():v(N,0){}
const T& operator[](int i)const{
return v.at(i);
}
T& operator[](int i){
return v.at(i);
}
在这种情况下,这是一种可接受的重载技术吗?这样我就可以从 const Vector<...>
中读取一个元素。以及从非常量分配给一个元素?自 at
返回一个引用,在这种情况下可以正确地分配给一个元素吗?
最佳答案
是的,这是对重载的一种完全合理的使用。但是,我质疑 at
的使用。最好同时拥有 at
和 operator[]
,它们传递给它们的 std::vector
对应物。这样,您就可以让调用者在安全性和性能之间做出选择(这就是为什么这两个版本首先存在的原因)。
关于c++ - 这是用组合 vector 类重载 [] 的正确方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16912981/