vector c++元素做函式引數怎麼弄
阿新 • • 發佈:2018-11-10
最近碰到vector有點懵,猛地想不出怎麼只傳一個元素……聯想到結構體陣列結果更亂了……
下面對比一下:
陣列元素,定義函式引數是int
容器類,定義函式引數就是包含的結構體student
對於int型陣列的元素作函式引數:
#include <iostream> using namespace std; void fun1(int num)//把陣列的特定元素作為引數 { cout <<"陣列元素:" <<num << endl;// } int main() { int b[2] = { 1,2 }; fun1(b[0]);//對陣列元素值的操作 return 0; }
對於student結構體的陣列的元素作函式引數:
#include <iostream> using namespace std; typedef struct { int x; int y; }student; student mark[1];//student型別結構體陣列 void fun2(student mum)//直接把結構體陣列的元素作為引數 { cout <<"student結構體,x:" << mum.x << endl; cout <<"student結構體,y:" << mum.y << endl; } int main() { mark[0].x = 1; mark[0].y = 1; fun2(mark[0]);//傳入結構體陣列的元素(其實就是mark結構體) return 0; }
對於student結構體的容器的元素作函式引數:
#include <iostream> #include <vector> using namespace std; typedef struct { int x; int y; }student; vector<student> mark;//容器包含student結構體,然後定義了mark同學佇列…… //void fun3(vector<student> num),過去這麼想錯誤,就如同上例傳整個陣列void fun1(int num[])一樣…… void fun3(student mum)//直接把物件的特定元素作為引數 { cout <<"student結構體,x:" << mum.x << endl; cout <<"student結構體,y:" << mum.y << endl; } int main() { mark.resize(1);//設定容量,否則會出現越界錯誤 mark[0].x = 1; mark[0].y = 1; fun3(mark[0]);//物件元素[0]的操作:就像結構體陣列,訪問其中一個元素一樣 return 0; }