2014-11-19 3 views
0

벡터의 요소가 오름차순인지 아닌지 확인하기 위해 부울 함수를 작성하고 싶습니다. 지금까지 내 코드 : 난 그냥이 값을 오름차순 여부에 분류되어 있는지 확인 할 if_sorted() 함수를 사용하여 벡터의 요소를 입력하고있는 main() 함수에서벡터 요소를 오름차순으로 정렬

bool if_sorted(vector<int>& v) { 
int i; 
for (; i < v.size(); i++) { 
    if(v[i] < v[i + 1]){ 
     break; 
    } else { 
     return false; 
} 
if(v[i] == v.size()) 
    return true; 
} 

.

is_sorted와 같은 함수없이이 부울 함수를 작성하거나 기존 코드를 수정할 수 있습니까?

+2

1. 당신을 FO 추천 정수의 시퀀스 질문을 진술하십시오. 2.'i'를 초기화하는 것을 잊었습니다. –

+0

다음을보십시오 : http://en.cppreference.com/w/cpp/algorithm/is_sorted – taocp

+0

is_sorted 또는 다른 기능을 사용하고 싶지 않습니다. 'iostream' 라이브러리에서만. 'i'는 for-loop 바로 위에서 초기화됩니다. – user3653164

답변

1
bool if_sorted(vector<int>& v) { 

    for (int i = 0; i < v.size() - 1; i++) { 
    if(v[i] > v[i + 1]){ 
     return false; 
    } 
    return true; 
} 
0

어떻게 std::is_sorted 사용하지 않는 약 :

Live On Coliru

#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <iterator> 

template <typename Container, 
     typename It = typename Container::const_iterator, 
     typename T = typename std::iterator_traits<It>::value_type> 
bool if_sorted(Container const &container) { 
    using std::begin; 
    using std::end; 

    It l(end(container)); 
    return l == std::adjacent_find(begin(container),l,std::greater_equal<T>()); 
} 

int main() 
{ 
    std::vector<int> v(10); 
    do std::generate_n(v.begin(), v.size(), rand); 
    while (!if_sorted(v)); 

    std::cout << "Yay, found a vector that was accidentally sorted: \n"; 
    std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " ")); 
} 

인쇄 무작위 분류,

Yay, found a vector that was accidentally sorted: 
338521972 564591732 631716774 818567430 923731840 1036769782 1094628595 1228665979 1863863464 2024865477 
관련 문제