
//
// To jest przykładowy kod z podrozdziału 8.5.4 „Przekazywanie argumentów przez stałą referencję” książki 
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include "std_lib_facilities.h"

//------------------------------------------------------------------------------

void print(const vector<double>& v)    // Przekazywanie przez stałą referencję.
{
    cout << "{ ";
    for (int i = 0; i<v.size(); ++i) {
        cout << v[i];
        if (i!=v.size()-1) cout << ", ";
    }
    cout << " }\n";
}

//------------------------------------------------------------------------------

void f(int x)
{
    vector<double> vd1(10);            // Mały wektor
    vector<double> vd2(10000);         // Duży wektor
    vector<double> vd3(x);             // Wrektor o nieznanym rozmiarze
    // ... wypełnianie vd1, vd2, vd3 wartościami ...
    print(vd1);
    print(vd2);
    print(vd3);
}

//------------------------------------------------------------------------------

int my_find(vector<string> vs, string s); // Przekazanie przez wartość — kopiowanie.

// Przekazywanie przez stałą referencję — bez kopiowania, dostęp polegający tylko na odczycie.
int my_find(const vector<string>& vs, const string& s);    

int main()
{
    f(10);
}

//------------------------------------------------------------------------------
