我有一个2d矩阵。我怎样才能将它转换为目标c?
我使用嵌套循环来转置它,因为我在数组和mutablearray类中找不到任何方法。
我的matix是3x3。
NSMutableArray *row1=[NSMutableArray arrayWithObjects:@1,@2,@3, nil];
NSMutableArray *row2=[NSMutableArray arrayWithObjects:@4,@5,@6, nil];
NSMutableArray *row3=[NSMutableArray arrayWithObjects:@7,@8,@9, nil];
NSMutableArray *twoDArray=[NSMutableArray arrayWithObjects:row1,row2,row3, nil];
NSLog(@"%@",twoDArray);
此后该怎么办?
答案 0 :(得分:2)
这很容易:
NSMutableArray *result = [NSMutableArray arrayWithCapacity:3];
for (NSUInteger i = 0; i < 3; i++) {
[result addObject:@[row1[i], row2[i], row3[i]]];
}
为了简单起见,我假设它总是3x3矩阵。
答案 1 :(得分:1)
尝试这种方式:
NSMutableArray *row1=[NSMutableArray arrayWithObjects:@1,@2,@3, nil];
NSMutableArray *row2=[NSMutableArray arrayWithObjects:@4,@5,@6, nil];
NSMutableArray *row3=[NSMutableArray arrayWithObjects:@7,@8,@9, nil];
NSMutableArray *twoDArray=[NSMutableArray arrayWithObjects:row1,row2,row3, nil];
NSLog(@"%@",twoDArray);
NSMutableArray *transposedArray=[NSMutableArray new];
for (NSInteger i=0; i<[row1 count]; i++) {
NSArray *array=[NSArray arrayWithObjects:[row1 objectAtIndex:i],[row2 objectAtIndex:i],[row3 objectAtIndex:i],nil];
[transposedArray addObject:array];
}
NSLog(@"Your transposed array: %@",transposedArray);
答案 2 :(得分:0)
假设您有一个普通的矩形twoDArray。然后你可以使用这种方法转置它。
-(NSArray *)transposedArray:(NSArray *)twoDArray {
NSUInteger rows = (int) twoDArray.count;
NSArray *a = twoDArray[0];
NSUInteger cols = a.count;
NSMutableArray *transposedTwoDArray = [[NSMutableArray alloc] init];
for(int i=0; i<cols; i++)
{
NSMutableArray *rowArr = [[NSMutableArray alloc] init];
for(int j=0; j<rows; j++)
{
[rowArr addObject:twoDArray[j][i]];
}
[transposedTwoDArray addObject:rowArr];
}
return transposedTwoDArray;
}