最近在复习算法,于是乎整理了几个专题,今天的话将C++版本的数组整理出来了,后续还会更新stl,dfs,图,树,堆,排序等知识,尽情期待。
show Code:
#include<iostream>
#include<vector>
#define arrSize 10
#define row 5
#define column 4
#define height 3
using namespace std;
int main()
{
//一维数组
//静态数组
cout<<"一维静态数组如下:"<<endl;
int a1[arrSize]={1,2};//初始化数组前两个元素,其它默认为0;
for(int i=0;i<arrSize;i++)
cout<<a1[i]<<" ";
cout<<endl;
//动态数组
cout<<"一维静态数组如下:"<<endl;
int *a2=new int[arrSize]{};
for(int i=0;i<arrSize;i++)
cout<<a2[i]<<" ";
cout<<endl;
delete [] a2;
//二维数组
int a3[row][column]={{1,2,3,4}};//初始化第一行
cout<<"二维静态数组如下:"<<endl;
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
cout<<a3[i][j]<<" ";
}
cout<<endl;
}
cout<<"二维动态数组如下:"<<endl;
int **a4=new int*[row];
for(int i=0;i<row;i++)//每行都要调用构造函数对数组进行初始化。
{
a4[i]=new int[column];
}
int times=0;
for(int i=0;i<row;i++)
for(int j=0;j<column;j++)
a4[i][j]=times++;
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
cout<<a4[i][j]<<" ";
}
cout<<endl;
}
for(int i=0;i<row;i++)//调用析构函数,对每个行的数组进行内存释放。
delete [] a4[i];
delete [] a4;//释放a4数组内存
cout<<"容器实现二维数组如下:"<<endl;
vector<vector<int>> a5(row);
vector<vector<int>>::iterator iter1;//二维容器的迭代器
vector<int>::iterator iter2;//一维vector的迭代器
//初始化
int value=0;
for(iter1=a5.begin();iter1<a5.end();iter1++)
{
(*iter1).resize(column);//设置每一行的元素个数
for(iter2=iter1->begin();iter2<iter1->end();iter2++)//iterator->begin(); iterator.begin()报错。
{
*iter2=value;
value+=2;
}
}
for(iter1=a5.begin();iter1<a5.end();iter1++)
{
for(iter2=iter1->begin();iter2<iter1->end();iter2++)
cout<<*iter2<<" ";
cout<<endl;
}
//多维数组 以三维数组为例
cout<<"3维静态数组如下:"<<endl;
int a6[row][column][height];
value=0;
for(int i=0;i<row;i++)
for(int j=0;j<column;j++)
for(int k=0;k<height;k++)
a6[i][j][k]=value++;
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
for(int k=0;k<height;k++)
{
cout<<a6[i][j][k]<<" ";
}
if(j!=column-1)
cout<<"next: ";
}
cout<<endl;
}
cout<<"3维动态数组如下:"<<endl;
int rows=6;
int*** a7=new int**[rows];//只有第一维可是变量,其它维数必须是常量,否则报错。
//初始化:
value=0;
for(int i=0;i<rows;i++)
{
a7[i]=new int* [column];
for(int j=0;j<column;j++)
{
a7[i][j]=new int[height];
for(int k=0;k<height;k++)
{
a7[i][j][k]=value;
value+=2;
}
}
}
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
for(int k=0;k<height;k++)
{
cout<<a7[i][j][k]<<" ";
}
if(j!=column-1)
cout<<"next: ";
}
cout<<endl;
}
return 0;
}
show Result:
补充一点:
vector其实也可以不用迭代器iterator访问,也可以用数组的访问方式,for循环,v[i][j]来访问!