Mengganti Vector 2 Dimensi dengan Menggunakan Referensi Pada Fungsi

Beberapa minggu yang lalu, saya kesulitan dalam melewatkan array 2D sebagari referensi dari satu fungsi ke fungsi lain. Di tengah-tengah kesulitan tersebut, saya menemukan sebuah tulisan yang mengatakan bahwa memang cukup sulit untuk melewatkan array 2 dimensi dengan menggunakan referensi alamat. Namun, kita tetap bisa melemparkan (return) sebuah referensi dari sebuah fungsi ke dalam sebuah pointer. Jadi sifatnya hanya 1 arah (return), tidak seperti referensi yang variabelnya akan berubah nilainya di dalam fungsi yang memanipulasinya.

Karena tidak puas, saya mencoba bermain-main dengan vector. Pada awalnya saya memang agak kesulitan, namun setelah dipelajari lebih mendalam, tidak sulit untuk mengontrol vector yang kita buat. Ternyata, vector ini bisa dilewatkan sebagai referensi ke dalam sebuah fungsi :D. Wow, saya cukup senang karena memang itu yang saya inginkan. Penggunaannya juga tidak jauh berbeda dengan melewatkan variabel pada umumnya. Sebagai contoh, di bawah ini adalah sebuah program untuk membuat sebuah vector 2 dimensi, lalu memanggil sebuah fungsi untuk memanipulasi vector tersebut, kemudian menampilkan isi vector yang sudah diganti tersebut.

#include <iostream>
#include <vector>
using namespace std;
 
void manipulasiVector(vector<vector<double> > &);
 
int main()
{
	typedef vector<double> vint;
	vint tmp(4);
	vector<vint> matriks(3);
	int i=0, j=0;
	cout << endl;
	for(i=0; i<3; i++){
		for(j=0; j<4; j++){
			tmp[j]=12*i+j;
			matriks[i]=tmp;
			cout << matriks[i][j] << " ";
		}
		cout << endl;
	}
	manipulasiVector(matriks);
	for(i=0; i<3; i++){
		for(j=0; j<4; j++){
			cout << matriks[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}
 
 
void manipulasiVector(vector<vector<double> > &v){
	int i=0,j=0;
	vector<double> tmp(10);
	for(i=0; i<3; i++){
		for(j=0; j<4; j++){
			tmp[j]= 8+i+j;
			v[i] = tmp;
		}
		cout << endl;
	}
}

Leave a Reply

Your email address will not be published. Required fields are marked *