Let,
#include<vector>
vector<int>v{1,2,3,-1,-2,-3};
Se il vettore è ordinato in ordine crescente o decrescente, allora si può trovare con la complessità O (1).
Per un vettore di ordine crescente il primo elemento è l'elemento più piccolo, è possibile ottenerlo per v [0] (indicizzazione basata su 0) e l'ultimo elemento è l'elemento più grande, è possibile ottenerlo per v [sizeOfVector-1 ].
Se il vettore è ordinato in ordine discendente, l'ultimo elemento è l'elemento più piccolo, è possibile ottenerlo per v [sizeOfVector-1] e il primo elemento è l'elemento più grande, è possibile ottenerlo per v [0].
Se il vettore non è ordinato, è necessario eseguire un'iterazione sul vettore per ottenere l'elemento più piccolo/più grande. In questo caso la complessità temporale è O (n), qui n è la dimensione del vettore.
int smallest_element=v[0] //let, first element is the smallest one
int largest_element = v[0] //also let, first element is the biggest one
for(int i =1;i<sizeOfVector;i++) //start iterating from the second element
{
if(v[i]<smallest_element)
{
smallest_element=arr[i];
}
if(v[i]>largest_element)
{
largest_element=v[i];
}
}
È possibile utilizzare iteratore,
for (vector<int>:: iterator it=v.begin(); it!=v.end(); it++)
{
if(*it<smallest_element) //used *it (with asterisk), because it's an iterator
{
smallest_element=*it;
}
if(*it>largest_element)
{
largest_element=*it;
}
}
Si può calcolare in sezione di ingresso (quando si deve trovare elemento più piccolo o più grande da un determinato vettore)
int smallest_element,largest_element,value;
vector<int>v;
int n;//n is the number of elements to enter
cin>>n;
for(int i = 0;i<n;i++)
{
cin>>value;
if(i==0)
{
smallest_element= value; //smallest_element=v[0];
largest_element= value; //also, largest_element = v[0]
}
if(value<smallest_element and i>0)
{
smallest_element = value;
}
if(value>largest_element and i>0)
{
largest_element = value;
}
v.push_back(value);
}
Inoltre è può ottenere l'elemento più piccolo/più grande con funzioni integrate
#include<algorithm>
int smallest_element = *min_element(v.begin(),v.end());
int largest_element = *max_element(v.begin(),v.end());
È possibile ottenere l'elemento più piccolo/più grande di qualsiasi intervallo utilizzando queste funzioni. come,
vector<int>v {1,2,3,-1,-2,-3};
cout<<*min_element(v.begin(),v.begin()+3); //this will print 1,smallest element of first three elements
cout<<*max_element(v.begin(),v.begin()+3); //largest element of first three elements
cout<<*min_element(v.begin()+2,v.begin()+5); // -2, smallest element between third and fifth element (inclusive)
cout<<*max_element(v.begin()+2,v.begin()+5); //largest element between third and first element (inclusive)
Ho usato asterisco (*), prima che le funzioni min_element()/(max_element). Perché entrambi restituiscono iteratore. Tutti i codici sono in C++.
Sembra che 'cloud' non sia un contenitore STL, ma piuttosto un' int [10] '. Fondamentalmente, 'cloud' non ha un membro' .begin() '.Potresti avere un libro di base in C++ a meno che tu non stia facendo solo questa cosa. –
Potrebbe essere utile anche un altro codice. Dov'è la definizione di cloud? – Tim
cloud è un vettore –