//---------------------------------------------------------
// set综述
//---------------------------------------------------------
1.set数据结构的实现:红黑树(平衡二叉树的一种)
2.在往set中插入元素时,会自动进行排序
3.set在搜寻元素时具备良好的性能,其搜寻函数算法具备对数复杂度
[在拥有1000个元素的set中搜寻元素,二叉树搜寻动做(由成员函数执行)的平均时间为线性搜寻时间的1/50]
4.自动排序形成set的一个重要限制:你不能直接改变元素值,由于这样会打乱本来正确的顺序,
所以,要改变元素值,必须先删除旧元素,再插入新元素
5.set不容许元素重复,multiset容许元素重复
//---------------------------------------------------------
//
//---------------------------------------------------------
// A
set<int> setTest;
setTest.insert(3);
setTest.insert(1);
setTest.insert(2);
setTest.insert(100);
插入元素时会自动进行排序算法
// B
set<int>::iterator iter = setTest.find(2);
if (setTest.end() != iter)
{
*iter = 1000;
}
虽然能够这样直接改变元素的值,但这样会打乱本来正确的顺序
因此,
iter = setTest.find(100)
会发现 iter == setTest.end()
即没有找到值为100的元素,实际上set中是有这个元素的。
形成这一结果的缘由就在于打乱了set中本来正确的顺序。数据结构