sto usando Visual Studio 2010 Pro
su una macchina Windows 7 64bit
e voglio usare count
(dalla testata <algorithm>
) su un valarray
:Qual è il tipo di ritorno dell'algoritmo STL "contano", su un valarray
int main()
{
valarray<bool> v(false,10);
for (int i(0);i<10;i+=3)
v[i]=true;
cout << count(&v[0],&v[10],true) << endl;
// how to define the return type of count properly?
// some_type Num=count(&v[0],&v[10],true);
}
l'uscita del programma di cui sopra è corretto:
4
Tuttavia voglio assegnare il valore a una variabile e utilizzando int
risultati in avvisi del compilatore circa perdita di precisione. Poiché valarray
non ha iteratori, non riesco a capire come utilizzare lo iterartor::difference_type
.
È in qualche modo possibile?
Si prega di chiarire. Vuoi assegnare l'output alla stessa variabile? Bene, immagino 'int x = count (& v [0], & v [10], vero);' non è quello che stai cercando? Altrimenti, che altro intendi esattamente? –
Bene, count() restituisce uno std :: iterator_traits <_Iter> :: difference_type. Il casting su int è considerato come un comportamento definito? per int c = count (& v [0], & v [10], true); Sto ricevendo avviso del compilatore - possibile perdita di dati. –
Potete permettervi l'aggiornamento a un compilatore C++ 11? C++ 11 ha sistemato molte cose per 'valarray', tra cui fornendole iteratori. –