关于set元素的不可直接更改
来源:互联网 发布:东莞淘宝代运营 编辑:程序博客网 时间:2024/05/23 20:02
set的元素类型和比较函数(或者函数对象)是可以配置的,但是一旦配置就不能更改。
set的元素类型不可更改是很自然的,这本就是模板的天然含义。
set的比较函数虽然可以得到,但是得到的是copy,不是引用或者指针,所以不能修改(修改比较函数对象的参数)。
set里面的元素不能直接的更改,一般的做法是先删除旧元素,然后添加新元素,这当然是为了维护里面元素的有序性。
单独的修改set的比较函数和元素数值,都有可能破坏set的有序性,从而破坏set的概念完整性,引起set的非预期行为。但是,从一个特殊的角度看,如果同时修改set的比较函数和元素数值,而且还能保证set内部元素的有序性,这不会破坏set的概念完整性,也不会引起任何的非预期行为。
我最近设计一个算法,正好发生在这种特殊的情况下,不得已只得修改STL的源码生成新的类(我命名为flexible_set),我觉得这是STL set类(也包括map,multiset,multimap)的一个缺陷。
概括起来,我得意思是:
1 修改比较函数
可以这样得到set的比较函数
key_compare kc = set_obj.key_comp();
但是我想这样得到
key_compare& kc = set_obj.key_comp();
然后调用kc的函数设置其参数。我说的修改比较函数就是这个意思
2 修改值
iterator it = set_obj.begin();
*it = 3;
- 关于set元素的不可直接更改
- java List<String> 元素不可更改 例子
- 自己写的一个TableModel,不可直接更改内容,但可以自由添加行
- 关于java final,并非不可更改值
- STL中的set---可以直接修改set中的元素么?
- 更改表的character set
- EditText内容不可更改的设置方法
- asList产生的List对象不可更改
- 关于原生js 如何找到他的直接子元素而不是后代子元素
- dict和set的key不可变
- Set中元素的问题
- 电脑一族不可不知的健康元素
- 关于html语言中的元素标签有哪些是直接闭合的</>,而不是成对出现
- 关于js插入页面元素问题 在js中创建html元素并在 引入js的地方直接显示
- java中关于集合set类的使用,删除集合中的元素
- Java 集合框架分析:关于Set,Map集合中元素判等的方式
- RatingBar不可点击更改
- RatingBar不可点击更改
- 在VMware5.0环境下编译内核(kernel2.6.13)全过程
- JSP标准语法
- 几道面试题
- 快速分解字符串到列表 将字符串列表转换成用分隔符分隔的字符串 的函数,超快。
- 神经网络与高级思维 (一)
- 关于set元素的不可直接更改
- 神经网络与高级思维(二)
- 最新想写一些关于Linux的东西
- 模板特化,全特化,偏特化,全部特化,部分特化的含义
- SQL CE 2.0 Server Tools安装失败解决办法
- test
- 求教Disable Del+Ctrl+Alt
- 正則表達式
- 在打印HTML页面时控制分页