案例1:我写的时候
char*str={"what","is","this"};
Run Code Online (Sandbox Code Playgroud)
然后str[i]="newstring";是有效的,而str[i][j]='j';无效.
案例2:我写的时候
char str[][5]={"what","is","this"};
Run Code Online (Sandbox Code Playgroud)
然后str[i]="newstring";无效,而str[i][j]='J';有效.
为什么会这样?我是一个初学者,在阅读其他答案后已经非常困惑.
当然,C#支持一维和多维数组,并且支持数组的数组。众所周知,如果在数组数组中,内部数组类型与外部数组具有不同的等级(维数),则 C# 语言和 .NET 运行时在类型中给出括号的顺序上存在分歧姓名。尤其:
typeof(string[][,]).Name == "String[,][]"
Run Code Online (Sandbox Code Playgroud)
和:
typeof(string[,][]).Name == "String[][,]"
Run Code Online (Sandbox Code Playgroud)
所以可能会出现一些混乱,但它确实有效。
以下是此类类型的正确用法:
static void Foo1(string[,][] a) {
//read:
string[] entry = a[7, 8];
//write:
a[7, 8] = new string[] { "alfa", "bravo", "charlie", "delta", };
}
static void Bar1(string[][,] a) {
//read:
string[,] entry = a[9];
//write:
a[9] = new string[,] { { "echo", "foxtrot", }, { "golf", "hotel", }, { "india", "juliett", }, };
}
Run Code Online (Sandbox Code Playgroud)
读者可以自己验证它是否可以编译并且可以工作(当然必须传入足够大的数组)。
现在,当我们尝试将上述内容与可空引用类型结合起来时,就会出现严重的问题,正如 C# 8(从 2019 年起)以来的 C# 中所存在的那样。至少使用我这里的编译器实现(最新版本的 Visual Studio 2022)。也就是说,如果我做这个轻微的修改:
// …Run Code Online (Sandbox Code Playgroud) c# jagged-arrays compiler-bug arrayofarrays nullable-reference-types
我想在while循环中创建一个关联数组数组.在while循环的每次迭代中,我想在数组中添加一个新元素.我怎么能这样做?之后我想在foreach中传递这个数组并打印数据.我现在有这部分代码,但显然有些问题.
while($row2 = mysql_fetch_array($result))
{
$myarray = array("id"=>$theid, "name"=>name($id), "text"=>$row2[text]);
}
Run Code Online (Sandbox Code Playgroud) 我在数组中有两个数据集:
arr1 = [
['2011-10-10', 1, 1],
['2007-08-09', 5, 3],
...
]
arr2 = [
['2011-10-10', 3, 4],
['2007-09-05', 1, 1],
...
]
Run Code Online (Sandbox Code Playgroud)
我想将它们组合成一个这样的数组:
arr3 = [
['2011-10-10', 1, 1, 3, 4],
...
]
Run Code Online (Sandbox Code Playgroud)
我的意思是,只需将这些行与同一date列组合在一起.
===编辑===
谢谢大家,为了澄清,我不需要那些没有出现在两个数组中的行,只需删除它们.
我正在尝试使用函数将对象文字转换为数组数组。
使用我拥有的两个示例对象,我正在寻找的最终结果是:
[ ["ugh","grr"] , ["foo", "bar"] , ["blah" , 138] ] 从 obj1
[ "shambala","walawala"] , ["foofighter","Barstool"] , ["blahblah",1382342453] ] 从 obj2
var obj1 = {
ugh: "grr",
foo: "Bar",
blah: 138
};
var obj2 = {
shambala: "walawala",
foofighter: "Barstool",
blahblah: 1382342453
};
var piece1 = Object.keys(obj1);
var piece2 = Object.values(obj1);
var result = [ ];
for (var i = 0; i < piece1.length; i++) {
result.push([piece1[i] , piece2[i]])
}
console.log(result)
Run Code Online (Sandbox Code Playgroud)
根据我上面的内容,我已经能够实现:
[ ["ugh","grr"] , ["foo", "bar"] , …
Julia 中是否有一个函数可以为您提供数组数组(或“锯齿状数组”)中的元素总数?
这就是我的意思:
my_array_of_arrays = [ [1, 5], [6], [10, 10, 11] ]
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个desired_function(my_array_of_arrays)可以返回的函数
6
如果不是,那么在 Julia 中最快的方法是什么?
提前致谢!
我正在尝试在 Python 中编写与以下语句等效的 Ada:L = [[] for i in range(n)]
我正在解决一个动态规划问题,我的计划是如果第 i 个数组的元素少于第 j 个数组的元素,则最终将 L 中第 j 个数组的内容复制到第 i 个数组中(j < i)。
我已经找到了如何通过以相反的顺序定义其范围来创建一个空数组。因此,例如, arr2 将是一个如下创建的空数组:
arr2:整数数组(2 .. 1);
我的问题是,如何定义更大的数组 L 以包含 n 个这样的 arr2 数组?
请告诉我。
更新:我能够使用下面的答案使其正常工作。这是我的代码。
package Integer_Vectors is new Ada.Containers.Vectors
(Index_Type => Natural,
Element_Type => Integer);
N: Integer;
Array_Of_Vectors : array(1 .. N) of Integer_Vectors.Vector := (others => Integer_Vectors.Empty_Vector);
Input_Sequence: Integer_Vectors.Vector;
Max: Integer_Vectors.Vector;
Input_List : String := Get_Line;
IntCast : Integer;
Last : Positive := 1;
begin …Run Code Online (Sandbox Code Playgroud) 有一个包含超过 10,000 对 Float64 值的数组。像这样的东西:
v = [[rand(),rand()], ..., [rand(),rand()]]
Run Code Online (Sandbox Code Playgroud)
我想从中得到一个包含两列的矩阵。可以用一个循环绕过所有对,它看起来很麻烦,但在几分之一秒内给出结果:
x = Vector{Float64}()
y = Vector{Float64}()
for i = 1:length(v)
push!(x, v[i][1])
push!(y, v[i][2])
end
w = hcat(x,y)
Run Code Online (Sandbox Code Playgroud)
permutedims(reshape(hcat(v...), (length(v[1]), length(v))))我在此任务中找到的解决方案看起来更优雅但完全挂起 Julia,需要重新启动会话。也许六年前它是最佳的,但现在它不适用于大型阵列。有没有既紧凑又快速的解决方案?
我在我的代码中观察到了“.+=”的意外行为(可能只是我,我对 Julia 还是比较陌生)。考虑以下示例:
julia> b = fill(zeros(2,2),1,3)
1×3 Array{Array{Float64,2},2}:
[0.0 0.0; 0.0 0.0] [0.0 0.0; 0.0 0.0] [0.0 0.0; 0.0 0.0]
julia> b[1] += ones(2,2)
2×2 Array{Float64,2}:
1.0 1.0
1.0 1.0
julia> b
1×3 Array{Array{Float64,2},2}:
[1.0 1.0; 1.0 1.0] [0.0 0.0; 0.0 0.0] [0.0 0.0; 0.0 0.0]
julia> b[2] .+= ones(2,2)
2×2 Array{Float64,2}:
1.0 1.0
1.0 1.0
julia> b
1×3 Array{Array{Float64,2},2}:
[1.0 1.0; 1.0 1.0] [1.0 1.0; 1.0 1.0] [1.0 1.0; 1.0 1.0]
Run Code Online (Sandbox Code Playgroud)
可以看出,最后一条命令不仅改变了 b[2] 的值,也改变了 b[3] 的值,而 b[1] 保持不变(*),我们可以确认运行: …
我有一个类似于下面结构的数组。我正在尝试根据公司名称(例如公司 A)尽可能有效地减少数组。因此,基本上,在公司名称相同的情况下,合并内部数组,以便每个位置的数字添加到相应位置的匹配数组的数字中。此外,如果其中一个数组缺少电子邮件或电话,请获取具有值的电子邮件或电话位置。底部的 resultArray 显示了我想要实现的结果。
*注意 - 我不知道公司后面的数字的长度。长度是动态设置的,但每个内部数组的长度始终相同。因此,有时所有innerArray 的长度都是6 个值,有时它们的长度可能是20 个值。
var array = [
[Company A, A-Email, A-Phone, 2, 5, 10],
[Company A, A-Email, , 1, 10, 7],
[Company A, , A-Phone, 3, 2, 4],
[Company B, B-Email, , 1, 10, 7],
[Company B, B-Email, B-Phone, 5, 10, 8],
[Company C, C-Email, C-Phone, 3, 2, 1]
]
var resultArray = [
[Company A, A-Email, A-Phone, 6, 17, 21],
[Company B, B-Email, B-Phone, 6, 20, 15],
[Company C, C-Email, C-Phone, 3, …Run Code Online (Sandbox Code Playgroud) var data=[
{name:'Sam',ssn:123, age:25, hobbies:[{name:'cricket'},{name:'football'}]},
{name:'John',ssn:234, age:25, hobbies:[{name:'cricket'},{name:'football'}]},
{name:'Mathew',ssn:345, age:25, hobbies:[{name:'cricket'},{name:'football'}]}
];
Run Code Online (Sandbox Code Playgroud)
想要将其生成为以下格式
[
{name:'Sam',ssn:123, age:25,hobbies:[{name:'cricket'}]},
{name:'Sam',ssn:123, age:25,hobbies:[{name:'football'}]},
{name:'John',ssn:234, age:25,hobbies:[{name:'cricket'}]},
{name:'John',ssn:234, age:25,hobbies:[{name:'football'}]},
{name:'Mathew',ssn:345, age:25,hobbies:[{name:'cricket'}]},
{name:'Mathew',ssn:345, age:25,hobbies:[{name:'football'}]}
];
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法。不明白。我已经添加了 reduce 方法的一些基本功能,但没有任何想法将其展平。
var flatten = data.reduce((curr, next) => {
var temp = [];
return (curr.hobbies = { name: "cricket" });
temp.push(curr);
return curr;
});
Run Code Online (Sandbox Code Playgroud) 有没有办法重构这段代码?第一个片段是我现在拥有的,第二个是我试图制作的逻辑.
count = 0
until count >= board.length
if board[count] == nil
board[count] = [nil, nil, nil, nil, nil, nil, nil, nil,]
end
count += 1
end
board
Run Code Online (Sandbox Code Playgroud)
在我的第四行,我想做类似的事情
board[count] = (8.times { board[count] << nil })
Run Code Online (Sandbox Code Playgroud)
我知道这只是一段时间.我只是好奇或者想要清除我的逻辑...谢谢!!