代码之家  ›  专栏  ›  技术社区  ›  Lars Nielsen

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

c++
  •  1
  • Lars Nielsen  · 技术社区  · 5 年前

    编辑: 此问题不适用于重写运算符 [] 我知道怎么做

    std::vector . 但是,我还没有找到一种方法来定义操作符 [index]=elm at(index) = elm .

    我甚至不完全确定要搜索什么,因为这两个词并不完全是运算符

    2 回复  |  直到 5 年前
        1
  •  2
  •   R Sahu    5 年前

    根本没有 []= 接线员。如果你的 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()

        2
  •  4
  •   jkb    5 年前

    operator[] 超载和你的 at 函数返回对指定项的引用。然后可以通过该引用指定新值。