首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用简短智能算法插入到数组中

使用简短智能算法插入到数组中
EN

Stack Overflow用户
提问于 2012-01-22 20:30:24
回答 1查看 104关注 0票数 0

我需要用位于某个位置的值对我的数组进行排序,而其余的值将具有某个初始位置。我这样做的方式可能太长了。

我有:

代码语言:javascript
复制
for(int i=0;i<100;i++)
        [whatBondInFrame addObject:@"no"];



        [whatBondInFrame insertObject:@"red" atIndex:0];
        [whatBondInFrame insertObject:@"red" atIndex:1];
        [whatBondInFrame insertObject:@"red" atIndex:2];
        [whatBondInFrame insertObject:@"gray" atIndex:10]; 
        [whatBondInFrame insertObject:@"gray" atIndex:11];
        [whatBondInFrame insertObject:@"gray" atIndex:12];
        [whatBondInFrame insertObject:@"red" atIndex:20];
        [whatBondInFrame insertObject:@"red" atIndex:21];
        [whatBondInFrame insertObject:@"red" atIndex:22];

它是有效的,但如果我想放更多,我将需要更多的行。现在,如果我使用这样的东西:

代码语言:javascript
复制
whatBondInFrame = [NSArray arrayWithObjects: @"Red", @"Green", @"Blue", @"Yellow", nil];

它会抹去我所有的东西,在这里我不能把它们放在正确的索引中。

有没有其他api可以在一行中将对象放在索引中(像这样,但带有索引?)

for循环不适合这个提议,因为元素是不对称的。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-01-23 02:14:18

最接近你想做的事情的api是NSMutableArray的:

代码语言:javascript
复制
- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects

但是,没有“一行”方法可以从一组不相交的索引中创建NSIndexSet

您是否真的关心“一行”(如果是,为什么?),或者关心维护一个常量索引/值对的集合以方便插入?如果是后者,您可以使用类似以下内容:

代码语言:javascript
复制
typedef struct { NSUInteger index, NSString *value } IndexValue;

IndexValue entries[] = { {0, @"red"}, {10, @"gray}, ... };

int count = sizeof(entries) / sizeof(IndexValue); // number of elements in the array
for(int ix = 0; ix < count; ix++)
   [whatBondInFrame replaceObjectAtIndex:entries[ix].index withObject:entries[ix].value];

现在,您有了定义索引/值对的单一位置,可以轻松地对其进行编辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8961051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档