STL中set的实值和键值是什么,有什么区别

「已注销」 2012-08-28 10:16:43
stl源码剖析中,说到 set元素的键值就是实值,实值就是键值。
键值和实值什么啊?



// 源码里有
typedef Key key_type;
typedef Key value_type;

// 书中的例子
int ia[5] = {0, 1, 2, 3, 4, 5};
set<int> iset(ia, ia+5);


set<int> int不就是template的参数吗?

set 由 rb-tree实现

// rb-tree的模版参数
template <class Key, class Value, class KeyOfValue, class Compare, class Alloc = alloc>

// 书中举的例子; Key, Value 只是某种类型,好像没有任何区别啊
rb_tree<int, int, identity<int>, less<int> > itree;


看了这些,就是搞不懂 实值和键值有什么区别,不都是某种型吗?
...全文
488 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
SzMing 2012-11-18
  • 打赏
  • 举报
回复
找个对应的实体就知道了,元素在set里自动被排序,排序的结果即为键值,而map的键值就为实值
startservice 2012-08-28
  • 打赏
  • 举报
回复
“在set容器中,value_type不是pair类型,而是与key_type相同的类型。它们指的都是set中存储的元素类型。”

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧