c++ - read-only variable is not assignable问题
PHP中文网
PHP中文网 2017-04-17 14:25:34
0
3
901

不知道该如何叙述这个问题,请看代码:

#include <set>
#include <iostream>
using namespace std;

struct test {
    int data[3];
};

int main(void) {
    test t1;
    set<test> s;
    s.insert(t1);
    s.begin()->data[0] = 1;//此处赋值报错:read-only variable is not assignable

    return 0;
}

应该是set内部的问题吧?
求高人解释,非常感谢...

PHP中文网
PHP中文网

认证0级讲师

Antworte allen(3)
小葫芦

set内的元素不可以更改,只能增加或者删除。http://www.cplusplus.com/refe...

Sets are containers that store unique elements following a specific order.

In a set, the value of an element also identifies it (the value is itself the key, of type T), and each value must be unique. The value of the elements in a set cannot be modified once in the container (the elements are always const), but they can be inserted or removed from the container.

Internally, the elements in a set are always sorted following a specific strict weak ordering criterion indicated by its internal comparison object (of type Compare).

set containers are generally slower than unordered_set containers to access inpidual elements by their key, but they allow the direct iteration on subsets based on their order.

Sets are typically implemented as binary search trees.
左手右手慢动作

意思好像是:只读的变量是不能被赋值的。。。

洪涛

set的迭代器是只读的,不允许修改(因为set内部有将元素排序,随意更改元素的值可能会破坏其有序性);

要改变元素的值,只能先把旧的删除,再把新的插入进去

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage