VECTOR
vector类为内置数组提供了一种替代的表示,通常建议使用vector。(但仍有许多程序环境必须使用内置数组),vector 是C++中的一个容器类型,vector类是随标准C++引入的标准库的一部分。
使用vector必须包含相关的头文件
#include
#include<vector>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
vector<vector<int> > a;
vector<int> b;
int temp;
int i,j;
for(i =0;i<5;i++)
{
b.clear();
for(j =0;j<5;j++)
{
cin>>temp;
b.push_back(temp);
}
a.push_back(b);
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
vector<string> text;
string word;
int a=5;
while((a--)&&cin>>word )//// && 短路问题
{
text.push_back(word);
}
for(int i=0;i<text.size();i++)
{
cout<<text[i]<<" ";
}
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
int *p;
int i;
p = (int *)malloc(sizeof(int)*5);
for(i=0;i<5;i++)
{
cin>>p[i];
}
for(i=0;i<5;i++)
cout<<p[i]<<endl;
free(p);
return 0;
}
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
int *p;
int i;
p = (int *)calloc(sizeof(int),5);
for(i=0;i<5;i++)
{
cin>>p[i];
}
for(i=0;i<5;i++)
cout<<p[i]<<endl;
free(p);
return 0;
}
malloc 与 calloc 在使用方法上基本上是差不多的。malloc它允许从空间内存池中分配内存,malloc()的参数是一个指定所需字节数的整数。colloc与malloc类似,但是主要的区别是存储在已分配的内存空间中的值默认为0,使用malloc时,已分配的内存中可以是任意的值. colloc需要两个参数,第一个是需要分配内存的变量的个数,第二个是每个变量的大小.
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
int ** p;
int i,j;
p = (int **)calloc(sizeof(int*),5);
for(i =0;i<5;i++)
{
p[i] = (int *)calloc(sizeof(int),5);
}
for(i=0;i<5;i++)
for(j =0;j<5;j++)
cin>>p[i][j];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cout<<p[i][j]<<endl;
for (int i= 0; i < 5; i++)
{
free(p[i]);
}
free(p);
return 0;
}
二维空间与一维空间主要的不同是:二维数组由一维数组组成,申请的空间要分别对每个一维空间申请。释放空间时也是如此,先释放每个一维空间,最后在释放二维空间。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
//一维空间申请
int m=9;
int *p= new int[m];
for(int i=0;i<9;i++)
{
cin>>p[i];
}
for(int i=0;i<9;i++)
cout<<p[i]<<endl;
delete []p;
//二维空间申请方法一
int n=4,m=4;
int tem =0;
int **p = new int*[m];
for(int i=0;i<m;i++)
{
p[i] = new int[n];
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
p[i][j]=tem;
tem++;
}
}
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cout<<p[i][j]<<endl;
for(int i=0;i<m;i++)
delete []p[i];
delete []p;
//二维空间申请方法二
int (*q)[3] = new int[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cin>>q[i][j];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cout<<q[i][j]<<setw(3);
delete []q;
return 0;
}