iPhone SDK 2d int array
iPhone SDK 2d int array
我正试图在objective-c中创建一个2d数组,但我并不真的想使用NSArray
,因为我使用的是int,代码会很烦人:{[array objectAtIndex:x] objectAtIndex:y]
,更不用说我必须将数字从NSNumber
转换回来。。。看起来有很多额外的工作。
我不能做以下事情吗?
// .h file
int aTiles[10][2];
// .m file
aTiles = {
{ 0, 0}, // 0
{ 0, 1}, // 1
{ 1, 5}, // 2
{ 0, 0}, // 3
{ 0, 0}, // 4
{ 0, 0}, // 5
};
它在同一行(int a[x][x] = {...};
)中一起工作,但我需要数组是公共的,这样我就可以从任何函数访问它。
第二行表示应使用分号。
感谢
看起来在//5 附近多了一个逗号
你需要为aTiles声明一个类型吗?
int aTiles = ...
当我尝试您的原始代码时,我得到了略有不同的错误,但这很有效:
// .h file
extern int aTiles[10][2];
// .m file
int aTiles[10][2] = {
{ 0, 0}, // 0
{ 0, 1}, // 1
{ 1, 5}, // 2
{ 0, 0}, // 3
{ 0, 0}, // 4
{ 0, 0}, // 5
};
由于这也被标记为C++,您可以使用ivar:
std::vector<std::vector<int> > tiles;
然后,您只需在对象的初始值设定项中调整和设置初始元素值。
否则,这是全球性的还是ivar?它应该是常量还是可变的?
这个令人敬畏的东西怎么样。。。(不是真的)
// .h
int aTiles[10][2];
// .m
int a[10][2] = {
{ 0, 0}, // 0
{ 0, 1}, // 1
{ 1, 5}, // 2
{ 0, 0}, // 3
{ 0, 0}, // 4
{ 0, 0}, // 5
};
for (int r = 0; r <= 5; r++) {
for (int c = 0; c < 2; c++) {
aTiles[r][c] = a[r][c];
}
}
绝对是一个变通办法,但是。。。想不出其他办法。如果有人找到了正确的方法,请告诉我:P
相关文章:
- 如何从map<pair<string,int>,pair<string,Array>>中迭代和查找?
- 如何将 int[4] 转换为 std::array<int,4>?
- 是否有可能在没有复制的情况下传递 std::vector<int> 作为参数来获得 std::vector<std::array<int, 3>>?
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 如何就地构造 std::map<int, std::array<Class, 2>>?
- 如何从方法返回静态常量 int std::array?
- 尝试使用 const int std::array 时出错
- Visual Studio 不采用 array: int magicSquare[n][n]?
- 混淆从"array of int[]"到"pointer to int"的显式衰减?
- 为什么我们不能将 int array[] 传递给 hoo(int* &p)?
- "Converting" 从 int[] 到 std::array at fread?
- Int Array[]打印不好
- 从 int 转换为 std::array<unsigned char, 1ul>::value_type 可能会改变其值
- 无法将 std::array 转换为 int?
- 错误:'const std::array<int, 3u>&'不是类、结构或联合类型
- 为什么 std::array<int, 10> x 不是零初始化,而是 std::array<int, 10> x = std::array<int, 10>()
- 未定义模板 'std::__1::array<int, 3>' 的隐式实例化
- "初始化":无法从"Array<int,3>"转换为"int"
- 带有参数的 func return list (int arry[int]<int>, int array[int])
- std::array<int, 10> 作为类成员是否初始化为零?