1. 程式人生 > >vector c++元素做函式引數怎麼弄

vector c++元素做函式引數怎麼弄

最近碰到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;
}