大家好 我想创建一个索引器列表列表来获取像myopj [i,j]这样的项目。 我的数据结构是这样的:
list<list<doubl>>
我尝试这样的代码,但它不起作用
public double this[int r, int c]
{
set
{
if (this.list1.Count == 0 )
{
this.list1[r].Add(value);
}
else
this.list1[r][c]=value;
}
}
当我观看时,程序不会输入'if'并结束观看。
请有人可以提供帮助
感谢所有人。
答案 0 :(得分:2)
答案 1 :(得分:2)
您的value
可能是list<T>
或T
,这似乎很奇怪。
如果没有更多信息,我建议您使用单个很长的T列表来实现这一点。
然后,您会将myList<T>[i,j]
翻译为基础list<T>[ i * numRows + j]
。
根据需要进行验证。
如果你真的,真的必须使用列表列表,如果你想最终得到一个矩形矩阵(即行i
的列表与行{{1}的列表具有相同数量的元素交错数组(每个列表都有一个独立数量的元素)。
如果您是第一种情况,请考虑使用适当数量的元素自动创建和填充行列表(使用j
初始化它们)
更新
然后,如果您真正需要的是矩形矩阵,那么使用列表。 它将具有numRows * numColumns元素。 想象一下,不是将一行放在另一行之下来制作矩阵,而是将一行的元素一个接一个地放在一起。
所以,如果你有: 11 12 13 21 22 23 31 32 33
以列表形式出现 11 12 13 21 22 23 31 32 33
第一种形式的X和Y(或i和j)坐标与第二种形式的列表中的索引之间存在简单的转换。
答案 2 :(得分:1)
你想要长度属性,而不是Capactiy。
使用:
if (this.list1.Count < r )
您的算法并没有多大意义,您可能想要描述您要完成的任务。看起来你试图让它增长,如果它不够大,但两个单独路径中的逻辑(如果没有)不对齐。
答案 3 :(得分:1)
你为什么检查容量?它可能永远不会为零。您的意思是检查Count
吗?