最近在複習算法,於是乎整理了幾個專題,今天的話將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]來訪問!