set功能表:
大家都知道set.end()访问最后一个元素,似乎没有任何问题
可是真的是这样吗???
看个例子:
//test
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(100);
s.insert(200);
s.insert(300);
s.insert(100);
s.insert(600);
cout<<"end"<<*s.end()<<endl;
return 0;
}
结果居然是4??
返回的是set的大小,并不是最后一个元素!
方法一:*s.rbegin()
//test
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(100);
s.insert(200);
s.insert(300);
s.insert(100);
s.insert(600);
cout<<"end: "<<*s.rbegin()<<endl;
return 0;
}
方法二:迭代器法
//test
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(100);
s.insert(200);
s.insert(300);
s.insert(100);
s.insert(600);
set<int>::iterator iter = s.end();
iter--;
cout<<(*iter)<<endl; //打印2
return 0;
}
必须定义一个迭代器!直接输出end()--是不行的!
//test
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s;
s.insert(100);
s.insert(200);
s.insert(300);
s.insert(100);
s.insert(600);
cout<<"end: "<<*(s.end()--)<<endl;
return 0;
}
输出:
我还没想明白这样为啥不行,如果有知道的dalao跟我说一下呗