相同的表达但不同的结果

时间:2015-12-16 16:28:52

标签: c++

所以我在leetcode中做了一个问题。它是使用队列实现堆栈。 如果我在下面提交此代码。它被接受了。

class Stack {
    public:
    queue<int> que;
    // Push element x onto stack.
    void push(int x) {
        que.push(x);
        for(int i=0;i<que.size()-1;i++){
            que.push(que.front());
            que.pop();
        }
    }

    // Removes the element on top of the stack.
    void pop() {
        que.pop();
    }

    // Get the top element.
    int top() {
        return que.front();
    }

    // Return whether the stack is empty.
    bool empty() {
        return que.empty();
    }
};

但如果我只将for(int i=0;i<que.size()-1;++i)更改为for(int i=0;i<=que.size()-2;i++),则会超出时间限制。最后执行的输入:push(1),empty()。有人可以告诉我为什么???感谢

1 个答案:

答案 0 :(得分:5)

<UserControl x:Class="AutoComplete.Views.ShellView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:cal="http://www.caliburnproject.org" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" > <UserControl.Resources> <FrameworkElement x:Key="ProxyElement" DataContext="{Binding}"/> </UserControl.Resources> <Grid> <ContentControl Visibility="Collapsed" Content="{StaticResource ProxyElement}"/> <DataGrid ItemsSource="{Binding Rows}" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="True"> <DataGrid.Columns> <DataGridComboBoxColumn Header="Code"> <DataGridComboBoxColumn.EditingElementStyle> <Style TargetType="ComboBox"> <EventSetter Event="TextBoxBase.TextChanged" Handler="OnTextChanged"/> <Setter Property="cal:Action.TargetWithoutContext" Value="{Binding DataContext, Source={StaticResource ProxyElement}}"/> <Setter Property="cal:Message.Attach" Value="[Event TextBoxBase.TextChanged] = [Action OnTextChanged($source, $dataContext)]; [Event KeyUp] = [Action OnKeyUp()]"/> <Setter Property="IsEditable" Value="True"/> <Setter Property="ItemsSource" Value="{Binding DataContext.Suggestions, Source={StaticResource ProxyElement}}"/> </Style> </DataGridComboBoxColumn.EditingElementStyle> </DataGridComboBoxColumn> </DataGrid.Columns> </DataGrid> </Grid> </UserControl> 返回一个size_t,它基本上是一个无符号数。并且负无符号数转换为一个庞大的数字。

所以queue::size() - &gt;巨大的数字(0xFFFFFFFF)