【问题标题】:Changing the value of the elements of a set data structure?更改集合数据结构元素的值?
【发布时间】:2013-05-26 05:53:10
【问题描述】:

我有一个set < long long > A。插入 500 个元素后:

ll k;
for ( int i=0 ; i<500 ; i++ ) {
    cin >> k ;
    A.insert (k) ;
}

现在当我想改变元素的值时:

A[0]--;

编译器给了我这个错误:

'A[0]'中的'operator[]'不匹配

如果你能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: c++ set


    【解决方案1】:

    集合是元素的集合,其中你“有”或“不”有一个元素(所以如果你 insert 数字 6 五次,它仍然只计算一次) .所以要删除你erase它的元素。在集合上使用 [] 没有多大意义(或者在返回的内容上使用 --)。

    也许您正在寻找使用另一种容器类型 - 可能是 map&lt;long long, int&gt; B,您使用 B[k]++;。然后你可以稍后再做B[0]--;——虽然如果0没有被使用,你最终会在那个元素中得到-1,所以你可能想改用(*B.begin())--;——真的取决于你在尝试什么实现。

    【讨论】:

    • 非常感谢,这很有帮助。
    猜你喜欢
    • 2013-04-25
    • 2010-09-08
    • 1970-01-01
    • 2019-08-21
    • 2015-08-23
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多