1. 程式人生 > >實現vector的swap函式誤區

實現vector的swap函式誤區

今天coding的時候想實現vector的swap函式,剛開始是這樣寫的,發現呼叫swap後原來的vector裡面的值根本沒有發生改變,想了許久,才發現沒有取引用,vector作為一個類,不傳引用僅僅是發生拷貝構造了一個區域性物件,改變的只是區域性物件裡的值。

void swap(vector<int>v, int a, int b) {
	int temp = v[a];
	v[a] = v[b];
	v[b] = temp;
}

正確應為:

void swap(vector<int>&v, int a, int b) {
	int temp = v[a];
	v[a] = v[b];
	v[b] = temp;
}