動態二維陣列的傳參與刪除

2021-07-16 21:01:30 字數 2127 閱讀 5664

昨晚有道程式設計題,題目不難,但是寫**卡在了很多小問題上,才發現對於c++的基礎知識很多其實是不清楚的

1、首先,對於面向行的輸入

int a,b;

cin>>a;

cin>>b;

這就是面向行的輸入,如果一行輸入兩個數值,空格間隔

cin>>a>>b;

對於字串

陣列型;

char str[100];

gets(str);

strlen(str);

字串型:

string s;

getline(s);

int len=s.size();//為了相容標準庫所以可以用size

2、二維動態陣列的傳參

指標陣列先來看一維的

int main(void)

int a;

cin>>a;

int *p=new int[a];

ceshi(p,a);//需要傳位址和長度

delete p;

void ceshi(int * p,int len)

這個是vector

int main(void)

vectorvec;

void ceshi(vector&vec)

二維的,我直接上昨晚的洗牌的程式設計**吧,舉例洗牌過程123456,635241。。。這個題目是所有的輸入完成之後再輸出的,所以必須用動態二維陣列

#include

#include

#include

using namespace  std; 

void xipai(int **p,int count,int k,int len)

for(int i=0;i 

}delete temp;

}int main()  

xipai(p,count,num3,num2*2);

count++; 

}for(int i=0;i

cout<

delete p[i];//二維動態陣列的刪除

}return 0;  

delete p;//分的兩部

}#include

#include

#include

using namespace  std; 

void xipai( vector>&vec,int count,int k)

for(int i=0;i 

}delete temp;

}int main()  

xipai(vec,count,num3);

count++;

}for(int i=0;i

cout<

}return 0;

} vector的另外一種寫法

#include

#include

#include

using namespace  std; 

void xipai( vector&vec,int k,int len)}}

int main()  

xipai(vec2,num3,num2*2);

count++;

vec.push_back(vec2);

}for(int i=0;i

cout<

}return 0;

} 刪除元素:  

vec.erase(vec.begin()+2);刪除第3個元素

vec.erase(vec.begin()+i,vec.end()+j);刪除區間[i,j-1];區間從0開始

清空:vec.clear();

int main(void)

, , };

// a[2][0]   的優先順序高於*

printf("%d\n", *(a + 1)[1]);//等價於a[i+j][0]

// a[1][1]

printf("%d\n", (*(a + 1))[1]);//等價於a[i][j]}

int** p=new int *[10];

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

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

deletep;

二維陣列傳參與動態宣告詳解

二維陣列在棧上分配,各行位址空間連續 定義的時候,擁有兩種形式 第一種是指明行數和列數 int array 3 3 第二種是不指明第一維,而指明第二維 int array 3 而在子函式宣告的時候,有三種方式一種是指明形參的行數和列數 int func int array 3 int m,int n...

二維陣列動態申請與傳參

今天在寫八皇后時遇到了一些小問題,下面整理一下。用二階指標來申請 include include 這裡只做申請 void makedoublearray int row,int col for i 0 i row i free array void main void 用二維陣列指標申請 inclu...

二維動態陣列

之前都是寫的小程式,一直用的靜態陣列,也沒出現問題。可是,最近碰到大型程式和工程,這時就要用動態陣列了。因為靜態陣列時儲存在棧中的,而動態陣列儲存在堆中。計算機的棧只有1m大小,而堆可以理論上達到計算機記憶體大小,可見當大型工程資料量非常大時,必須使用動態陣列了。c 的動態陣列的建立和刪除要用到ne...