c++如何实现动态数组声明,求代码~~

白发膜女 发布于 2011/02/10 15:59
阅读 6K+
收藏 1

如题~~

加载中
0
lcl
lcl

int **m_AdjMatrix;

  m_AdjMatrix=new int *[m_Size];
  for(int i=0;i<m_Size;i++)
  {
   m_AdjMatrix[i]=new int[m_Size];
  }

为什么不用vector等结构

0
sam_ai
sam_ai

c++就么动态数组~

请注意基本概念:指针和数组其实是一个东西,唯一的区别数组是有大小的。这个大小是编译的时候就定好的。

楼上正解!干嘛不用STL~

重新非配太浪费性能~

0
xyz555
xyz555

楼上的乱扯。

数组名是个指针,但指针绝对不是数组。用申请指针的方式是得不到一个连续分配的内存空间的。

给个算法

申请一个数组,给数组赋值,如果数组空间不够,再翻倍空间申请数组,使用内存拷贝拷贝过来。反复以上步骤。完成后申请一个合适的数组再内存拷贝一次。

0
lvcheng
lvcheng

数组就是内存中连续的一段空间(附代码)

int *Icalloc1d(int x)
{
  int *array;
  int i;

  array=(int *) calloc(x,sizeof(int ));

  return(array);
}



0
xyz555
xyz555

楼上的代码太拖拉了

int *Icalloc1d(int x)
{  
  return (int *)calloc(x, sizeof(int));
}

其实这个Icalloc1d函数都没什么太大的意义,直接使用calloc就是了。

调用函数得到的连续空间,函数内部细节并不明确使用什么方式分配的空间。

int *p1;

int *p2;

p1,p2空间不一定就是连续的(可能凑巧是连续的)。

0
Jackarain
Jackarain

stl的vector就是连续的空间, 可以使用resize来动态分配空间大小...

c++中还是尽量少用malloc之类, 多用stl的vector, 而且不用操心内存释放的问题.

0
张明
张明

/**

 * Allocate matrix by specified rows and columns.

 */

template<typename Type>

inline void makeMatrix( Type **&m, int rows, int cols )

{

    m = new Type*[rows];

    for( int i=0; i<rows; ++i )

        m[i] = new Type[cols];

}

/**

 * Delete the matrix with specified rows.

 */

template<typename Type>

inline void deleteMatrix( Type **&m, int rows )

{

    for( int i=0; i<rows; ++i )

        delete []m[i];

    delete []m;

    m = 0;

}

0
白发膜女
白发膜女

引用来自#4楼“xyz555”的帖子

楼上的乱扯。

数组名是个指针,但指针绝对不是数组。用申请指针的方式是得不到一个连续分配的内存空间的。

给个算法

申请一个数组,给数组赋值,如果数组空间不够,再翻倍空间申请数组,使用内存拷贝拷贝过来。反复以上步骤。完成后申请一个合适的数组再内存拷贝一次。

 恩。谢谢

0
白发膜女
白发膜女

引用来自#3楼“sam_ai”的帖子

c++就么动态数组~

请注意基本概念:指针和数组其实是一个东西,唯一的区别数组是有大小的。这个大小是编译的时候就定好的。

楼上正解!干嘛不用STL~

重新非配太浪费性能~

 指针和数组其实是一个东西 ??那还分开设计干嘛?《《再再论指针》》建议看看。

返回顶部
顶部