代码之家  ›  专栏  ›  技术社区  ›  Igor

引用stl map元素的值?

  •  8
  • Igor  · 技术社区  · 16 年前

    是否可以传递对map元素值的引用,并在其中进行修改?

    foo(string & s)
    {
        s = "xyz";
    }
    
    map<int, string> m;
    m[1] = "abc";
    foo(m[1]); // <-- Is it ok? Will m[1] be "xyz" after this call?
    

    谢谢您。

    5 回复  |  直到 16 年前
        1
  •  8
  •   Assaf Lavie    16 年前

    答案是肯定的。

    (operator[]返回 reference )

        2
  •  4
  •   tunnuz    16 年前

    是的,我们可以。
    它还可以与 std::vectors (由于看起来您使用的是数字键,因此您可以考虑改用它们)。

        3
  •  2
  •   Scott Langham    16 年前

    对。

    这与键入m[1]=“xyz”没有区别。一旦编译完成,它将把所有的代码都简化为相同的内容。

        4
  •  1
  •   Mr.Ree    16 年前

    一句忠告: 您可能希望将其作为指针而不是引用传递。我这样做是为了让漫不经心的读者更清楚地认识到它会被改变。

    这一切都是为了和下一个冲下长矛的人清楚地交流,而他必须维护这段代码。

    但除此之外,是的,这是完全合法的密码!

        5
  •  0
  •   MSalters    16 年前

    是的,这很好——正如所有人都说的那样——而且,编译器会告诉你它是不是。你可能想做一点实验;试着将“hello”或(42)传递给foo(string&)来感受一下编译器给你的警告。