c++ - 这是用组合 vector 类重载 [] 的正确方法吗

标签 c++

我正在构建一个带有 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 的使用。最好同时拥有 atoperator[],它们传递给它们的 std::vector 对应物。这样,您就可以让调用者在安全性和性能之间做出选择(这就是为什么这两个版本首先存在的原因)。

关于c++ - 这是用组合 vector 类重载 [] 的正确方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16912981/

相关文章:

c++ - 当应用程序需要更多 RAM 时,如何允许将一段内存换出到磁盘?

c++ - 在 Windows XP-7 中禁用蓝牙支持

c++ - 在C++中分配为true或false的随机对象

c++ - std::lower_bound 的奇怪错误

c++ - 找到一种方法将映射中的匹配键和值 push_back 到 vector 中

c++ - unique_ptr 不在 try/catch 中调用析构函数

c++ - ‘*’ 标记之前的预期构造函数、析构函数或类型转换

c++ - 如何为模板嵌套类编写可交换的重载算术运算符?

C++ 内存分配器和多态类型

c++ - 内存重用中的新旧对象类型