相关疑难解决方法(0)

如何在C++中使用数组?

C++从C继承了数组,几乎无处不在.C++提供了易于使用且不易出错的抽象(std::vector<T>自C++ 98和C++ 11std::array<T, n>以来),因此对数组的需求并不像在C中那样频繁出现.但是,当您阅读遗产时代码或与用C编写的库交互,你应该牢牢掌握数组如何工作.

本FAQ分为五个部分:

  1. 类型级别的数组和访问元素
  2. 数组创建和初始化
  3. 赋值和参数传递
  4. 多维数组和指针数组
  5. 使用数组时常见的陷阱

如果您觉得此常见问题解答中缺少重要内容,请写下答案并将其作为附加部分链接到此处.

在下文中,"数组"表示"C数组",而不是类模板std::array.假定了C声明符语法的基本知识.请注意,面对异常,手动使用newdelete如下所示是非常危险的,但这是另一个常见问题解答的主题.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ arrays pointers c++-faq multidimensional-array

469
推荐指数
5
解决办法
12万
查看次数

行主要订单指数

我目前正在研究将2d地形图保存为一维数组的项目.地图中的每个块都由xy坐标索引.因此,为了将地图保存为一维数组,我使用行主要顺序方法(http://en.wikipedia.org/wiki/Row-major_order)将xy坐标转换为单个索引值(其中让我把块放到一个数组中).

现在,我的问题是如何将其转换回来?我有一个唯一的号码,我必须转换回xy坐标.任何帮助,将不胜感激.^^

indexing block map coordinate

9
推荐指数
1
解决办法
2782
查看次数

C中矩阵实现之间的差异

我用两种不同的方式在C中创建了两个2D数组(矩阵).
我不明白它们在内存中的表示方式之间的区别,以及我不能以相同的方式引用它们的原因:

scanf("%d", &intMatrix1[i][j]); //can't refer as  &intMatrix1[(i * lines)+j])

scanf("%d", &intMatrix2[(i * lines)+j]); //can't refer as &intMatrix2[i][j])
Run Code Online (Sandbox Code Playgroud)

这两个数组的实现方式有何不同,为什么我必须以不同的方式引用它们?

如何以相同的方式(??????在我的printMatrix函数中)引用每个数组中的元素?

int main()
{
   int **intMatrix1;
   int *intMatrix2;

   int i, j, lines, columns;

   lines = 3;
   columns = 2;

   /************************* intMatrix1 ****************************/

   intMatrix1 = (int **)malloc(lines * sizeof(int *));

   for (i = 0; i < lines; ++i)
      intMatrix1[i] = (int *)malloc(columns * sizeof(int));

   for (i = 0; i < lines; ++i)
   {
       for (j = 0; j …
Run Code Online (Sandbox Code Playgroud)

c matrix

5
推荐指数
1
解决办法
1898
查看次数

C++ 为什么在多维数组中超出范围时会得到下一行值?

这是我的代码,

int a[3][3] ={
            {0,1,2},
            {3,4,5},
            {6,7,8}
    };
for(int i = 0 ; i < 3 ; i ++)
        for(int j = 3 ; j>0 ; j--)
            cout << a[i-1][j] << " ";
Run Code Online (Sandbox Code Playgroud)

我期望输出是, "0 0 0 0 2 1 0 5 4"
但结果是"0 0 1 3 2 1 6 5 4"

这背后的原因是什么?

c++

1
推荐指数
1
解决办法
80
查看次数

如何创建此int值并进行处理?

例如,我有这些int价值.

int map1[10][10] = //;
int map2[10][10] = //;
int map3[10][10] = //;
int map4[10][10] = //;
int map5[10][10] = //;

for (int i = 1 ; i < 6 ; i++)
map{i}[2][2] = 3;
Run Code Online (Sandbox Code Playgroud)

上面的代码只是为了说明/理解,我知道这是错误的.我如何选择/访问我int的?

c c++ objective-c

0
推荐指数
1
解决办法
100
查看次数