c# - Stack 中元素的弹出范围

标签 c# stack

大家好,我需要一些关于 Stack.Pop() 函数的小帮助。 据我所知,堆栈可以一个接一个地弹出元素,但我需要多个元素才能弹出。例如,我在堆栈中有 5 个元素 (4,3,2,1,0),现在我想弹出前 3 或 2 个元素,直到堆栈索引达到 1 或 2。 到目前为止,我的“for”循环无法正常工作:

for(var i = stack.Count - 1; i >= 0; i--)
{
    stack.Pop();
}

谁能帮帮我,让他弹出一定范围的元素? 谢谢!

最佳答案

您还可以创建一个扩展方法:

public static class Extensions
{
    public static List<T> PopRange<T>(this Stack<T> stack, int amount)
    {
        var result = new List<T>(amount);
        while (amount-- > 0 && stack.Count > 0)
        {
            result.Add(stack.Pop());
        }
        return result;
    }
}

然后在你想要的地方使用它:

var stack = new Stack<int>(new[] { 1, 2, 3, 4, 5 });

var result = stack.PopRange(3);

// result: { 5, 4, 3 }
//  stack: { 2, 1}

关于c# - Stack 中元素的弹出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29607418/

相关文章:

pandas - 我如何在不对 Pandas 进行排序的情况下解压?

c++ - 我在哪里删除对象?我不在范围内

c++ - 比较队列和堆栈的内容

c# - 强类型数据集: Override column get : set

c# - 我想在组合框中显示包含我搜索的文本的项目

c# - 未使用的导入命名空间与程序效率有关系吗?

c++ - 如何在 Windows 上正确实现 CaptureStackBackTrace

c++ - 在 C++ 中使用堆栈计算后缀表达式

c# - 在不调用 Add 方法的情况下测试 Remove 方法

c# - 如何从一个类中读取另一个类中的文档?