1. 程式人生 > >C++中vector作為引數的三種傳參方式

C++中vector作為引數的三種傳參方式

複製程式碼
  1 #include <iostream>
  2 #include <vector>
  3 
  4 using namespace std;
  5 
  6 void function1(std::vector<std::vector<int> > vec)
  7 {
  8     cout<<"-----------------------------------------"<<endl;
  9     //列印vec的地址
 10     cout<<"function1.&vec:
"<<&vec<<endl; 11 //列印vec[i]的地址(即第一層vector的地址) 12 cout<<"function1.&vec[i]:"<<endl; 13 for(int i=0;i<2;i++) 14 cout<<&vec[i]<<endl; 15 //列印vec的各元素地址 16 cout<<"function1.&vec[i][j]:"<<endl; 17 for(int
i=0;i<2;i++) 18 { 19 for(int j=0;j<3;j++) 20 cout<<&vec[i][j]<<" "; 21 cout<<endl; 22 } 23 cout<<"---------------------------"<<endl; 24 //列印vec的各元素值 25 cout<<"function1.vec[i][j]:"<<endl; 26 for
(int i=0;i<2;i++) 27 { 28 for(int j=0;j<3;j++) 29 cout<<vec[i][j]<<" "; 30 cout<<endl; 31 } 32 } 33 void function2(std::vector<std::vector<int> >& vec) 34 { 35 cout<<"-----------------------------------------"<<endl; 36 //列印vec的地址 37 cout<<"function2.&vec:"<<&vec<<endl; 38 //列印vec[i]的地址(即第一層vector的地址) 39 cout<<"function2.&vec[i]:"<<endl; 40 for(int i=0;i<2;i++) 41 cout<<&vec[i]<<endl; 42 //列印vec的各元素地址 43 cout<<"function2.&vec[i][j]:"<<endl; 44 for(int i=0;i<2;i++) 45 { 46 for(int j=0;j<3;j++) 47 cout<<&vec[i][j]<<" "; 48 cout<<endl; 49 } 50 cout<<"---------------------------"<<endl; 51 //列印vec的各元素值 52 cout<<"function2.vec[i][j]:"<<endl; 53 for(int i=0;i<2;i++) 54 { 55 for(int j=0;j<3;j++) 56 cout<<vec[i][j]<<" "; 57 cout<<endl; 58 } 59 60 } 61 void function3(std::vector<std::vector<int> > *vec) 62 { 63 cout<<"-----------------------------------------"<<endl; 64 //列印vec的地址 65 cout<<"function3.&vec:"<<vec<<endl; 66 //列印vec[i]的地址(即第一層vector的地址) 67 cout<<"function3.&vec[i]:"<<endl; 68 for(int i=0;i<2;i++) 69 cout<<&(*vec)[i]<<endl; 70 //列印vec的各元素地址 71 cout<<"function3.&vec[i][j]:"<<endl; 72 for(int i=0;i<2;i++) 73 { 74 for(int j=0;j<3;j++) 75 cout<<&(*vec)[i][j]<<" "; 76 cout<<endl; 77 } 78 cout<<"---------------------------"<<endl; 79 //列印vec的各元素值 80 cout<<"function3.vec[i][j]:"<<endl; 81 for(int i=0;i<2;i++) 82 { 83 for(int j=0;j<3;j++) 84 cout<<(*vec)[i][j]<<" "; 85 cout<<endl; 86 } 87 } 88 89 int main() 90 { 91 //建立2*3的vector容器v,初始值均初始化為0 1 2 1 2 3 92 std::vector<std::vector<int> > v(2,std::vector<int>(3,0)); 93 for(int i=0;i<2;i++) 94 { 95 for(int j=0;j<3;j++) 96 v[i][j]=i+j; 97 } 98 99 //列印v的地址 100 cout<<"&v:"<<&v<<endl; 101 //列印v[i]的地址(即第一層vector的地址) 102 cout<<"&v[i]:"<<endl; 103 for(int i=0;i<2;i++) 104 cout<<&v[i]<<endl; 105 //列印v的各元素地址 106 cout<<"&v[i][j]:"<<endl; 107 for(int i=0;i<2;i++) 108 { 109 for(int j=0;j<3;j++) 110 cout<<&v[i][j]<<" "; 111 cout<<endl; 112 } 113 114 cout<<"---------------------------"<<endl; 115 //列印v的各元素值 116 cout<<"v[i][j]:"<<endl; 117 for(int i=0;i<2;i++) 118 { 119 for(int j=0;j<3;j++) 120 cout<<v[i][j]<<" "; 121 cout<<endl; 122 } 123 124 function1(v); 125 function2(v); 126 function3(&v); 127 128 return 0; 129 }
複製程式碼