回 帖 发 新 帖 刷新版面

主题:求助大虾们!!急!数据结构(stl)编程问题!

#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
void main()
{
    deque<long>a;
    deque<long>w;
    int b,i;
    long n;
    cin>>n;
    for(i=0;i<n;i++)
        {
        a.empty();
        cin>>b;
        if(a.size()==0)
            {
                a.push_back(b);
                w[i]=0;
            }
        else if(b<a[0]&&b!=0&&b!=1)
            {    
                a.push_front(b);
                w[i]=0;
            }
        else if(b>a[a.size()-1]&&b!=0&&b!=1)
            {    
                a.push_back(b);
                w[i]=0;
            }
        else if(a[0]<b&&b<a[a.size()-1]&&b!=0&&b!=1)
            w[i]=b;
        else if(b==0)
            w[i]=a[0];
        else if(b==1)
            w[i]=a[a.size()-1];
        }
    for(i=0;i<w.size();i++)
        {
            if(w[i]!=0)
            cout<<w[i]<<"\n";
            else
                continue;
        }
}    
各位大虾,这个编译可以通过,可是却不能运行,为什么呀?搞得头痛死了……哥哥姐姐路过帮帮忙啊

回复列表 (共3个回复)

沙发

请教你说的“不能运行”是什么意思

板凳

没有给w分配存储空间就使用下标操作符
#include<iostream>
#include<deque>
#include<algorithm>
using namespace std;
void main()
{
    deque<long>a;
    deque<long>w;//没有给w分配存储空间
    int b,i;
    long n;
    cin>>n;
    for(i=0;i<n;i++)
        {
        a.empty();
        cin>>b;
        if(a.size()==0)
            {
                a.push_back(b);
                w[i]=0; //error使用下标操作符
            }
        else if(b<a[0]&&b!=0&&b!=1)
            {    
                a.push_front(b);
                w[i]=0;
            }
        else if(b>a[a.size()-1]&&b!=0&&b!=1)
            {    
                a.push_back(b);
                w[i]=0;
            }
        else if(a[0]<b&&b<a[a.size()-1]&&b!=0&&b!=1)
            w[i]=b;
        else if(b==0)
            w[i]=a[0];
        else if(b==1)
            w[i]=a[a.size()-1];
        }
    for(i=0;i<w.size();i++)
        {
            if(w[i]!=0)
            cout<<w[i]<<"\n";
            else
                continue;
        }


可以这样修改:
#include "stdafx.h"
#include<iostream>
#include<deque>
#include<vector>
#include<algorithm>


using namespace std;
void main()
{
    deque<long>a;
    int b,i;
    long n;
    cin>>n;
    [color=00FF00]deque<long>w(n);[/color]
    for(i=0;i<n;i++)
        {
        a.empty();
        cin>>b;
        if(a.size()==0)
            {
                a.push_back(b);
                w[i]=0;
            }
        else if(b<a[0]&&b!=0&&b!=1)
            {    
                a.push_front(b);
                w[i]=0;
            }
        else if(b>a[a.size()-1]&&b!=0&&b!=1)
            {    
                a.push_back(b);
                w[i]=0;
            }
        else if(a[0]<b&&b<a[a.size()-1]&&b!=0&&b!=1)
            w[i]=b;
        else if(b==0)
            w[i]=a[0];
        else if(b==1)
            w[i]=a[a.size()-1];
        }
    for(i=0;i<w.size();i++)
        {
            if(w[i]!=0)
            cout<<w[i]<<"\n";
            else
                continue;
        }
}

3 楼

这类问题不用看代码,估计都是 segment fault 一类的毛病,注意你的内存和指针

我来回复

您尚未登录,请登录后再回复。点此登录或注册