天天看點

【day0402】C++引用形參

# 引用形參,相當于傳遞指針,可修改原變量的值。

* 引用形參的好處:無須複制實參,直接使用,既節省空間,又減少記憶體消耗。

Demo1:

#include <iostream>

using namespace std;

/*引用形參*/

//交換函數
void swap(int a, int b){
    a ^= b;
    b ^= a;
    a ^= b;
}

//引用形參修改實參
void swap2(int &a, int &b){
    a ^= b;
    b ^= a;
    a ^= b;
}

int main()
{
    int a = 38, b = 49;

    cout << "交換之前:" << endl;
    cout << "a = " << a << endl << "b = " << b << endl << endl;

    swap(a, b);
    cout << "第一次交換:" << endl;
    cout << "a = " << a << endl << "b = " << b << endl << endl;

    swap2(a, b);
    cout << "第二次交換:" << endl;
    cout << "a = " << a << endl << "b = " << b << endl;

    return 0;
}
           

輸出:

【day0402】C++引用形參

//注意:将不需要修改的引用形參定義為const引用

Demo2:

#include <iostream>

using namespace std;


int calc(int num1, int num2, int &y){
    //num1和num2需要複制x和y的
    //當參數多的時候,浪費空間和時間
    //y傳引用:無須複制;若不必修改,可使用常引用const int &y

    y = num1-num2;
    return num1+num2;
}

int main()
{
    int x, y;
    x = 55;
    y = 33;
    x = calc(x,y,y);

    cout << "加法結果:" << x << endl;
    cout << "減法結果:" << y <<endl;

    return 0;
}
           

輸出:

【day0402】C++引用形參

# vector和其他容器類型的形參。

* 順序容器:

vector、list、deque等等.

* 關聯容器:

map、set等等.

Demo3:

#include <iostream>

using namespace std;

/*vector和其他容器類的形參*/
#include <vector>

//引用形參
void print(vector<double> &v)
{
    vector<double>::iterator begin = v.begin();

    while (begin != v.end()){
        cout << *begin++ << endl;
    }
}

//傳入容器疊代器(~常用方法~)
void print_2(vector<double>::const_iterator bgn,
             vector<double>::const_iterator end)
{
    while (bgn != end){
        cout << *bgn++ << endl;
    }
}


int main()
{
    vector<double> vec;
    vec.push_back(3.15);
    vec.push_back(5.88);
    vec.push_back(8.44);

    cout << "容器引用:\n";
    print(vec);

    cout << "\n容器疊代器:\n";
    print_2(vec.begin(), vec.end());

    return 0;
}
           

輸出:

【day0402】C++引用形參

繼續閱讀