허락하다,
#include <vector>
vector<int> v {1, 2, 3, -1, -2, -3};
벡터가 오름차순 또는 내림차순으로 정렬 된 경우 복잡성 O (1)로 찾을 수 있습니다.
오름차순 벡터의 경우 첫 번째 요소는 가장 작은 요소이고 v [0] (0 기반 인덱싱)로 가져올 수 있고 마지막 요소는 가장 큰 요소이며 v [sizeOfVector-1]로 가져올 수 있습니다.
벡터를 내림차순으로 정렬하면 마지막 요소가 가장 작은 요소이고 v [sizeOfVector-1]로 가져올 수 있고 첫 번째 요소가 가장 큰 요소이면 v [0]으로 가져올 수 있습니다.
벡터가 정렬되지 않은 경우 가장 작은 / 가장 큰 요소를 얻기 위해 벡터를 반복해야합니다.이 경우 시간 복잡도는 O (n)이고 여기서 n은 벡터의 크기입니다.
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 < v.size(); i++) //start iterating from the second element
{
if(v[i] < smallest_element)
{
smallest_element = v[i];
}
if(v[i] > largest_element)
{
largest_element = v[i];
}
}
반복자를 사용할 수 있습니다.
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;
}
}
입력 섹션에서 계산할 수 있습니다 (주어진 벡터에서 가장 작거나 가장 큰 요소를 찾아야 할 때)
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);
}
또한 내장 함수로 가장 작은 / 가장 큰 요소를 얻을 수 있습니다.
#include<algorithm>
int smallest_element = *min_element(v.begin(),v.end());
int largest_element = *max_element(v.begin(),v.end());
이 함수를 사용하여 모든 범위의 최소 / 최대 요소를 얻을 수 있습니다. 예 :
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)
min_element () / max_element () 함수 앞에 별표 (*)를 사용했습니다. 둘 다 반복자를 반환하기 때문입니다. 모든 코드는 C ++로되어 있습니다.
cloud
STL과 용기, 그러나 오히려 아니다int[10]
. 기본적으로cloud
회원이 없습니다.begin()
. 이 한 가지만 수행하지 않는 한 기본적인 C ++ 책을 얻고 싶을 수도 있습니다.