c ++ 0x中不可变的设置键在哪里?
|
我在一次演讲中听说C ++ 0x关联容器中的键不再可变。以前,在C ++ 03中,它们是可变的,只有Standard的文本说顺序或键必须保持不变。
现在,幸运的是,这是非法的:
std::set<int> ss { 2,5,1,6,8,5,8,0,2,4,9 };
auto it = ss.find(4);
*it = 7; // \'ERROR: assignment of read-only location\'
这种变化在C ++ 0x中体现在哪里?我看了定稿,但仍然看到find()
和这样的收益iterator
-听起来可以修改。 (这也是为什么我必须猜:为什么像map
这样的容器希望允许值beeing修改。为了使键部分为const,进行了哪些更改?)
没有找到相关结果
已邀请:
2 个回复
呸溉
和
值 type与键类型相同。对于
和
等于
。按键 关联容器是不可变的。 和23.2.4 / 6说: 对于关联容器, 值类型与键相同
和
不变 迭代器。 ... 注意:
和
有 在这种情况下相同的语义 这句话能解决您的问题吗?
膏焦凑
和
指定为相同。这当然是低级的,而不是技术性,但是对于
容器在C ++ 0x中将
键入为
是完全合法的。 对于
,那当然是was19ѭ,所以它从来没有问题。