如何为自定义集合定义[] =和at()=?

时间:2019-03-19 20:22:26

标签: c++

编辑:该问题不是为了覆盖操作符[],我知道该怎么做

我已经实现了自己的集合类,并且为了分配数据,我想提供与std::vector相同的运算符/功能。 但是,我还没有找到定义运算符[index]=elmat(index) = elm的方法。

我什至不完全确定要搜索的术语,因为这两个词不完全是运算符

2 个答案:

答案 0 :(得分:4)

定义operator[]重载和at函数以返回对指定项目的引用。然后,您可以通过该引用分配新值。

答案 1 :(得分:2)

没有[]=运算符。如果您的operator[]函数返回了可以分配给它的引用,则仅此而已。

一个简单的例子来演示这个想法。

struct Foo
{
    int i;
    int& operator[](int) { return i; };
    int operator[](int) const { return i; };
}

现在您可以使用

Foo f;
f[10] = 20;   // The index is not used by Foo::operator[]
              // This is just to demonstrate the syntax.

您需要使用at()函数做同样的事情。