【发布时间】:2022-11-02 22:23:55
【问题描述】:
如果我想修改Stack 的顶部,我该怎么做?
我知道你可以使用Stack.Pop() 然后推回修改后的值,但这似乎不优雅。
还有其他方法吗?
例子:
Stack<string> stringStack;
stringStack.Push("foo");
stringStack.Push("ba");
stringStack.Replace("bar"); //implementation
这似乎有一个非常明显的答案。不知道为什么它还没有实施。
【问题讨论】:
-
您可以为 Stack 创建扩展方法。在该方法中,只需再次弹出并推送新值。
-
您将无法逃脱弹出和推送,这只是在 .net 中实现堆栈的方式。好消息是两个操作都是 O(1)如果它不会破坏容量。老实说,如果您需要对集合中的元素进行许多突变,则数组或 List<T> 更适合,因为这将是单个 O(1) 操作,而堆栈弹出推送则为 2
-
只是提到它:正如this answer (related to
Queue) 中所建议的,当您有一堆引用类型.
标签: c# collections stack