int a,b;
pair<int,int>p;
cin>>a>>b;
p=make_pair(a,b);
cout<<p.first<<" "<<p.second<<endl;
/*输入:3 5
输出:3 5*/
int main()
{
set<pair<int,int> >st;
set<pair<int,int> >::iterator it;
st.insert(pair<int,int>(3,5));
st.insert(pair<int,int>(3,4));
st.insert(pair<int,int>(4,3));
for(it=st.begin();it!=st.end();it++)
{
cout<<(*it).first<<" "<<(*it).second<<endl;
}
}
/*输出:3 4
3 5
4 3
*/
//set对pair排序时先按第一个由小到大排,第一个相同,才按第二个由小到大
lower_bound(),upper_bound();
两个函数的用法类似,在一个左闭右开的有序区间里进行二分查找。
注意是有序区间,左闭右开
对于upper_bound来说,返回的是被查序列中第一个大于查找值的指针,lower_bound则是返回的是被查序列中第一个大于等于查找值的指针。
int main()
{
vector<int>v;
for(int i=1;i<=4;i++)
v.push_back(2*i);//2 4 6 8
vector<int>::iterator it;
it=lower_bound(v.begin(),v.end(),3);//返回的是指针
cout<<*it<<endl;//4输出大于等于三的值
}
int main()
{
set<int>st;
set<int>::iterator it;
for(int i=1;i<=4;i++)
st.insert(2*i);
it=st.lower_bound(3);就是在整个区间找
cout<<*it<<endl;//4
}
int main()
{
vector<int> v;
for (int i = 1; i < 4; i++)
v.push_back(2 * i);//注意此时v中的元素本身就是有序的
int pos=lower_bound(v.begin(),v.end(),3)-v.begin();//返回的是大于等于3的元素的位置
cout <<pos<< endl;//1
return 0;
}
int main()
{
int a[4] = { 2, 4, 6, 8 }; //注意此时a中的元素本身就是有序的
int *it = lower_bound(a,a+4,3); //前两个表示区间。返回的是此区间大于等于三的值
cout<<*it<< endl;//4
}
int main()
{
int a[4] = { 2, 4, 6, 8 }; //注意此时a中的元素本身就是有序的
int pos = lower_bound(a, a + 4, 3) - a;//返回大于等于3的数的位置
cout <<pos<< endl;//1
return 0;
}
3.vector<int>G[x];
表示建立了一个vector的数组,每一个G[i]都是一个vector