昨晚有道程式設計題,題目不難,但是寫**卡在了很多小問題上,才發現對於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...