C++ 卡在什么是中位数UVa 10107

C++ 卡在什么是中位数UVa 10107,c++,c++11,vector,runtime-error,median,C++,C++11,Vector,Runtime Error,Median,我被这个uva问题困住了,我认为我的算法是正确的,但是程序在运行时崩溃了,我不知道问题出在哪里,但我认为它与迭代器有关??!请帮忙 代码: #包括 #包括 我得到了它我终于被接受了,问题在于迭代器,当循环的第一次迭代中向量为空时,它指向v.begin(),因此程序崩溃。在执行第一个push_back()之后,我让迭代器指向向量的开头,在这种情况下,向量不是空的 右代码: #include<iostream> #include<algorithm> #include <

我被这个uva问题困住了,我认为我的算法是正确的,但是程序在运行时崩溃了,我不知道问题出在哪里,但我认为它与迭代器有关??!请帮忙

代码:

#包括
#包括


我得到了它我终于被接受了,问题在于迭代器,当循环的第一次迭代中向量为空时,它指向v.begin(),因此程序崩溃。在执行第一个push_back()之后,我让迭代器指向向量的开头,在这种情况下,向量不是空的

右代码:

#include<iostream>
#include<algorithm>
#include <vector>
using namespace std;
int main()
{
    int n,R,L;
    long long idx,aver;
    vector<long long>v;
    vector<long long>::iterator it;

    while(cin>>n)
    {

        v.push_back(n);
        it=v.begin();
        sort(v.begin(),v.end());



        if(v.size()==1){
            cout<<*it<<endl;
        }
        else if(v.size()%2==0)
        {
            L=v.size()/2-1;
            R=v.size()/2;

            aver=(*(it+L)+*(it+R))/2;

            cout<<aver<<endl;
        }
        else
        {
            idx=v.size()/2;
            aver=*(it+idx);

            cout<<aver<<endl;
        }
    }
    return 0;
}
#包括

#包括

a)使用调试器找出崩溃的位置。b) 在这里描述你的程序应该做什么。@deviantfan c)不要把你的时间浪费在愚蠢的在线编码竞赛上!我是解决问题的新手,还不会调试,谢谢。@πάνταῥεῖ 我我不是。但是,是的,我也认为“在线评委”是胡说八道。@MazenMohamed如果你先学会调试的话。这是最基本的技能之一。请在这里询问后回来。
#include<iostream>
#include<algorithm>
#include <vector>
using namespace std;
int main()
{
    int n,R,L;
    long long idx,aver;
    vector<long long>v;
    vector<long long>::iterator it;

    while(cin>>n)
    {

        v.push_back(n);
        it=v.begin();
        sort(v.begin(),v.end());



        if(v.size()==1){
            cout<<*it<<endl;
        }
        else if(v.size()%2==0)
        {
            L=v.size()/2-1;
            R=v.size()/2;

            aver=(*(it+L)+*(it+R))/2;

            cout<<aver<<endl;
        }
        else
        {
            idx=v.size()/2;
            aver=*(it+idx);

            cout<<aver<<endl;
        }
    }
    return 0;
}