//访问获取元素;返回值是Type T
void test2()
{
int myint[]={75,23,65,42,13};
set<int> myset(myint,myint+5);
cout《*myset.find(65)《endl;//65 //查找元素的位置iterator,若没有此元素,则返回myset.end()(最后一个元素的下一个位置)
cout《myset.count(65)《endl;//1 查询元素的个数
}
//返回迭代器;返回值是iterator,或reverse_iterator
void test3()
{
int myint[]={75,23,65,42,13};
set<int> myset(myint,myint+5);//初始化:[beg,end)
for (set<int>::iterator it=myset.begin();it!=myset.end();it++)
{
cout《*it《" ";//13 23 42 65 75
}
cout《"\nreverse myset:"《endl;
for (set<int>::reverse_iterator it=myset.rbegin();it!=myset.rend();it++)
{
cout《*it《" ";//75 65 42 23 13
}
cout《endl;
}
//其他
void test4()
{
int myint[]={75,23,65,42,13};
set<int> myset(myint,myint+5);//初始化:[beg,end)
set<int>::key_compare com=myset.key_comp();
set<int>::iterator it=myset.begin();
int keyHighest=*myset.rbegin();//不能使用*myset.end()
do
{
cout《" "《*it;//13 23 42 65 75
} while (com(*(it++),keyHighest));
cout《endl;
set<int>::value_compare val=myset.value_comp();
int valHighest=*myset.rbegin();
it=myset.begin();
do
{
cout《" "《*it;//13 23 42 65 75
} while (val(*(it++),valHighest));
cout《endl;
set<int>::iterator itlows,itups;
itlows=myset.lower_bound(42);
itups=myset.upper_bound(42);
cout《*itlows《" "《*itups《endl;//42 65
std::pair<set<int>::iterator,set<int>::iterator> pa=myset.equal_range(42);
cout《"the lower bound point to:"《*pa.first《endl;//42
cout《"the upper bound point to:"《*pa.second《endl;//65
//equal_range():返回pair(iterator,iterator),pair中的第一个迭代器是lower_bound()返回的迭代器,pair中的第二个迭代器是upper_bound()返回的迭代器,如果两个迭代器相等,则说明map中不存在这个关键字
//lower_bound():返回是iterator,返回要查找关键字的下界(是一个迭代器)
//upper_bound():返回是iterator,返回要查找关键字的上界(是一个迭代器)
}
//遍历map中的数据
void test5()
{
//1.使用前向迭代器
//2.使用相反迭代器
int myint[]={75,23,65,42,13};
set<int> myset(myint,myint+5);//初始化:[beg,end)
for (set<int>::iterator it=myset.begin();it!=myset.end();it++)
{
cout《*it《" ";//13 23 42 65 75
}
cout《"\nreverse myset:"《endl;
for (set<int>::reverse_iterator it=myset.rbegin();it!=myset.rend();it++)
{
cout《*it《" ";//75 65 42 23 13
}
cout《endl;
}
void Test(char h)
{
cout《"press key===="《h《endl;
switch(h)
{
case '0': test0();break;
case '1': test1();break;
case '2': test2();break;
case '3': test3();break;
case '4': test4();break;
case '5': test5();break;
case 27:
case 'q':exit(0);break;
default:cout《"default "《h《endl;break;
}
}
void main()
{
while(1)
{
Test(getch());
}
}