C++ 动态申请数组_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > C++ 动态申请数组

C++ 动态申请数组

 2012/6/11 0:14:38  qimo601  程序员俱乐部  我要评论(0)
  • 摘要:方法1、C++使用vector方便生成:#include<iostream>#include<vector>#include<iomanip>usingnamespacestd;intmain(){inti,j,m,//行数n;//列数cout<<"inputvalueform,n:";cin>>m>>n;//注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"
  • 标签:c++ 数组
方法1、C++使用vector方便生成:?
#include <iostream> 
#include <vector> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
	int i, 
	j, 
	m, //行数 
	n; //列数 

	cout << "input value for m,n:"; 
	cin>>m>>n; 

	//注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"。 
	vector<vector<int> > vecInt(m, vector<int>(n)); 
	for (i = 0; i < m; i++) 
	for (j = 0; j < n; j++) 
	vecInt[i][j] = i*j; 

	for (i = 0; i < m; i++) 
	{ 
		for (j = 0; j < n; j++) 
			cout<<setw(5)<<vecInt[i][j]<<":"<<setw(9)<<&vecInt[i][j]; 
		cout<<endl; 
	} 

	return 0; 
}
? 方法2:用vector可以,用裸指针也可以创建,只不过要小心使用,因为很容易造成内存泄露:
int main()

{
	//类型定义,将int*指针定义成Row
	typedef int* Row;

	int row, col;

	cin >> row >> col;

	Row* rows = new Row[row];

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

	{
		//有小(),直接将各项初始化为0
		//rows[i] = new int[col]();
		rows[i] = new int[col];

	}

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

	{

		delete [] rows[i];

	}

		delete [] rows;

}
? ? 3、C++动态申请多维数组
在C++中为数组动态分配内存的格式如下:

第一步:声明
       type (p)[常量1][常量2]...[常量n];
第二步:申请
       p=new type[x][常量1][常量2]...[常量n];
说明:先定义一个n维的数组指针,其中p是一个指针变量,x是一个整形变量,
      然后申请一个第一维为x的n+1维数组,记住只有第一维x可变。
举例:
   1、动态申请一个一维数组
      int *p;
      int x;
      cin>>x;
      p=new int[x];   
   2、动态申请一个二维整型数组
      int (*p)[10];
      int x;
      cin>>x;
      p=new int[x][10];
      若执行这段程序,给x输入3,则相当于定义一个3行10列的
      一个二维数组。实际是申请3102个存储单元,并把其首
      地址返回给p,通过p来操纵这个动态数组。
   3、动态申请一个三维数组
      int (*p)[8][6];
      int x;
      cin>>x;
      p=new int[x][8][6];
       
注意:
   1、申请成功与否,看p的值,若p的值为NULL,则说明申请不成功,
      反之,则申请成功。
   2、动态申请的存储单元,使用之后应及时返还给系统,方法是:
      delete p;即可。

(new 和 delete 、 new[] 和 delete[] 对应使用)
?
发表评论
用户名: 匿名