#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
int main()
{
int x,ans;
vector<int > a;
cin>>x;
while(x!=0)
{
a.push_back(x);
cin>>x;
}
ans=a.size();
if(ans%2==0)
cout<<a[ans/2]+a[ans/2-1]<<endl;
else
cout<<a[ans/2]<<endl;
return 0;
}
第一遍提交错误的原因是 偶数是a[ans/2-1]和a[ans/2]因为数组下标是从0开始的
set只能通过迭代器访问,而vector可以通过数组下标和迭代器访问
set的特点,自动排序且去重
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
set<int > st;
set<int >::iterator it;
st.insert(4);
st.insert(8);
st.insert(5);
for(it=st.begin();it!=st.end();it++)
{
printf("%d",*it);
}
return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i;
set<int > st;
set<int >::iterator it;
for(i=1;i<=8;i++)
st.insert(i);
it=st.find(7);//找到值
printf("%d",*it);
return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i;
set<int > st;
set<int >::iterator it;
for(i=1;i<=8;i++)
st.insert(i);
st.erase(st.find(7));//删除某个值erase和find对应一起用
//st.erase(7);//这样直接删也行
for(it=st.begin();it!=st.end();it++)
printf("%d",*it);
return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i;
set<int > st;
set<int >::iterator it;
for(i=1;i<=8;i++)
st.insert(i);
st.erase(st.find(5),st.end());//erase的区间删除的用法
for(it=st.begin();it!=st.end();it++)
printf("%d",*it);
return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i;
set<int > st;
set<int >::iterator it;
for(i=1;i<=8;i++)
st.insert(i);
st.clear();//全部删除
printf("%d",st.size());
return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int i,y,t;
set<int > st;
set<int >::iterator it;
int n,x;
cin>>n>>t;
for(i=1;i<=n;i++)
{
cin>>x;
st.insert(x);
}
for(i=1,it=st.begin();it!=st.end();it++,i++)
if(i==t)
{printf("%d\n",*it);
break;
}
if(i!=t)
printf("NO RESULT");
return 0;
}
这道题我学会了,set排好序后,怎么输出第几小的数据,在for循环中利用i变量控制
map
访问方式1.下标
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<char,int>mp;
mp['c']=20;
mp['c']=30;
printf("%d\n",mp['c']);
return 0;
}
访问方式2
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<char,int>mp;
map<char,int>::iterator it;
mp['z']=20;
mp['c']=30;
mp['d']=40;
for(it=mp.begin();it!=mp.end();it++)
printf("%c %d\n",it->first,it->second);
return 0;
}