mercoledì 20 marzo 2013

C++ Appunti: containrs, iteratori, libreria std



Come inizializzare un vettore con un array
vector<int> v;
double arr[] = {27.1, 23, 233, 56.6, 4};
cont_t v(arr, arr+sizeof(arr)/sizeof(double));
//o anche
cont_t v(arr, arr+_countof(arr));

CREAZIONE VETTORE
cont_t v(10);
cont_t v(10, 3.14);
cont_t v(b.begin(), b.end());
cont_t v(b.begin(), b.begin()+3);

FILL
fill(v.begin(), v.end(), 0.0);

FILL_N
fill_n(back_inserter(v), 10, 3.1415);

GENERATE
generate(v.begin(), v.end(), incr<double>(3.1415));

GENERATE_N
generate_n(back_inserter(v), 10, incr<double>());

ITERATORE
#include <iterator>
typedef vector<int>::iterator iter_t;
iter_t it;

for(it=v.begin();it!=v.end();++it)
cout << *it << ",";*/

FOR EACH
#include <algorithm>
for_each(v.begin(), v.end(), print<double>);

Con print definita come:

template <typename _T>
void print(const _T& val){
cout << val << ", ";
}

COPY
copy(v.begin(), v.end(), v2.begin());
copy(v.begin(), v.end(), ostream_iterator<double>(cout, ", "));

Creare un vettore di interi crescenti
generate_n(front_inserter(v), 10, incr<double>());


template <typename _T>
struct incr{
_T _val;
incr(const _T val=0): _val(val){};
const _T& operator() (){//le seconde parentesi sono i parametri
return ++_val;
}
};

Nessun commento:

Posta un commento