在C/C++中,对于单个数或者对于一维数组的处理相对来说比较简单,但是对于二位数组或者多为数组就会比较困难。这里我们将介绍两种传递数组数据的两种方法,读者如有更好的方法,欢迎评论区讨论。
1.对于不喜欢指针的读者,我们可选择C/C++自带的vector容器进行操作。但是我们需要在头文件中包含vector包,即
#include < vector> using namespace std
vector的用法如下(详见C++ vector 容器浅析):
- Vector<类型>标识符
- Vector<类型>标识符(最大容量)
- Vector<类型>标识符(最大容量,初始所有值)
- Int i[5]={1,2,3,4,5}
Vector<类型>vi(I,i+2);//得到i索引值为3以后的值 - Vector< vector< int> >v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过
#include#include #include using namespace std; int main() { vector obj;//创建一个向量存储容器 int for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据 { obj.push_back(i); cout< 对于二维数组:
#include#include #include #include using namespace std; int main() { //方法一 int N=5, M=6; vector > obj(N, vector (M)); //定义二维动态数组5行6列 for(int i=0; i< obj.size(); i++)//输出二维动态数组 { for(int j=0;j > obj2(N); //定义二维动态数组大小5行 for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0 { obj2[i].resize(M); } for(int i=0; i< obj2.size(); i++)//输出二维动态数组 { for(int j=0;j 通常我们会用到函数传参:
#include#include #include #include #include using namespace std; vector > testvector() { int N=4; int M=5; vector > obj(N, vector (M)); for(int i=0; i< obj.size(); i++)//输出二维动态数组 { for(int j=0;j > obj(N, vector (M)); obj=testvector(); for(int i=0; i< obj.size(); i++)//输出二维动态数组 { for(int j=0;j 2.对于习惯用指针的读者,我们就不多说了,指针的好处有很多,传值方便,万能的指针。
#include#include #include #include #include using namespace std; int** test() { int rowsNum = 4; int colsNum = 5; // 定义二维数组 int** a = new int*[rowsNum]; for(int i = 0; i < rowsNum; i++) { a[i] = new int[colsNum]; } for(int i=0;i 或者不传出数据,直接用指针代替传入赋值:
#include#include #include #include #include using namespace std; int testcp(int *Q,int N) { int a[N]={9}; for(int i=0;i 本文参考了以下文献:
C++(笔记)浅析vector容器的实例_浅然的专栏-CSDN博客



