当前位置: 首页 > 知识库问答 >
问题:

为什么“。删除”会影响分配给列表的2D结构中的所有项目?

应瀚
2023-03-14

我目前正在尝试创建一个数独求解器,并在将一些可能的值分配给尚未全神贯注的框的步骤中。(关于我为什么要这样做的背景信息:数独是一个基于9x9网格的数字游戏,它的上下文规则允许网格中某些未全神贯注的框在求解过程中保存可能的值)

为此,我创建了一个结构,将其定义为二维,并使用for循环用预定义的整数列表填充它。

现在,当我试图从二维结构中某个特定项的列表中删除一个整数时,我发现该结构中所有项的列表都删除了该整数。可能有一个简单的解决方案,但我一直在努力寻找。希望下面的代码能澄清一些令人困惑的口头解释。

Structure Element
    Dim PossibleValues As List(Of Integer)
    Dim ElementValue As Integer
End Structure

Sub Main()
    Dim List as New List(Of Integer)({1,2,3})
    Dim TDP(8,8) as Element
    For x as integer = 0 to 8
        For y as integer = 0 to 8
            TDP(x,y).PossibleValues = List
        Next
    Next
    TDP(0,0).PossibleValues.Remove(1)
End Sub

现在我希望只有TDP(0,0)在打印出整数列表时会有一个“2,3”的列表,但是当我检查其他项目时,即TDP(1,0),它的整数列表也是“2,3”

共有1个答案

朱翔
2023-03-14

请看下面的作业:

 TDP(x,y).PossibleValues = List

List(Of T)是一种引用类型,因此这会将对同一列表对象的引用分配给每个数组元素。

如果您希望每个项目都有自己的可能项目列表,您需要深度复制列表或创建一个新列表:

Sub Main()
    Dim TDP(8,8) as Element
    For x as integer = 0 to 8
        For y as integer = 0 to 8
            TDP(x,y).PossibleValues = New List(Of Integer)({1,2,3})
        Next
    Next
    TDP(0,0).PossibleValues.Remove(1)
End Sub
 类似资料:
  • 我有一个UIView,它通过几个约束被放置在屏幕上。一些约束由superview拥有,另一些约束由其他祖先拥有(例如,可能是UIViewController的view属性)。 要澄清这些解决方案的问题,请考虑以下视图层次结构: 爷爷 父亲 我 儿子 女儿 现在假设我们创建了以下约束,并始终将它们附加到它们最近的共同祖先: null

  • 问题内容: 我创建了许多对象,然后将它们存储在列表中。但是我想在一段时间后删除它们,因为我创建了一个新闻,并且不希望我的内存过高(就我而言,如果不删除它,它会跳到20 gigs的内存)。 这里有一些代码来说明我要做什么: A和B是我的对象。C是这两个对象的列表。我正在尝试使用C中的for循环将其删除:一次是使用DEL,另一次是使用一个函数。它似乎不起作用,因为打印继续显示对象。 我需要这个,因为我

  • 本文向大家介绍python 删除列表里所有空格项的方法总结,包括了python 删除列表里所有空格项的方法总结的使用技巧和注意事项,需要的朋友参考一下 首先,我们来随便写一个带空格的列表: 相信已经有人尝试过,诸如以下的方式去删掉空格,例如: 但是结果你会发现是这样的,它总是不能完全的删完空格,会在末尾留下一个。 方法一: 这个时候,可以尝试把‘=='改为in: 之前我在网上看过用‘'join的方

  • 本文向大家介绍sharepoint 删除列表中的项目,包括了sharepoint 删除列表中的项目的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我正在从远程数据库读取一组行,从本地数据库读取一组类似的行,然后使用RemoveAll删除本地已经存在的远程行。。。 但这对我来说似乎不对。当我真正需要做的只是检查是否存在匹配项时,我认为我不应该计算事物。我尝试了和的各种用法,但得到了废话。我不能使用(如这里建议的),因为列表元素不是同一类型。 有更好的方法吗?

  • 问题内容: 我将如何使用python检查列表并删除所有重复项?我不需要指定重复项是什么- 我希望代码找出是否存在重复项,如果有则将其删除,每个重复项仅保留一个实例。如果列表中有多个重复项,它也必须起作用。 例如,在下面的代码中,列表lseparatedOrbList有12个项目-一项被重复六次,一项被重复五次,并且只有一个实例。我希望它更改列表,因此只有三项-每一项,并且它们之前出现的顺序相同。我