std::max_element(std::begin(my_deque), std::end(my_deque))
과 같은 코드를 사용할 수 있습니까?C++ 11에서 std :: deque에 std :: max_element()를 사용할 수 있습니까?
deque가 연속적으로 저장된다는 보장이 없기 때문에 묻습니다. std::max_element
과 같은 함수를 사용할 때 정확하게 동작하는지 알고 싶습니다.
대단히 감사합니다!
std::max_element(std::begin(my_deque), std::end(my_deque))
과 같은 코드를 사용할 수 있습니까?C++ 11에서 std :: deque에 std :: max_element()를 사용할 수 있습니까?
deque가 연속적으로 저장된다는 보장이 없기 때문에 묻습니다. std::max_element
과 같은 함수를 사용할 때 정확하게 동작하는지 알고 싶습니다.
대단히 감사합니다!
std::max_element
은 우리가 앞으로 반복자를 필요로 알고있는 템플릿 유형 이름에서
template<class ForwardIterator>
ForwardIterator max_element(ForwardIterator first, ForwardIterator last);
형태의 서명이 있습니다. 96 container.requirements.general] - 테이블 당 우리는 std::deque
사용하는 것을 알고
는 앞으로 반복자를 사용하거나 더 나은 항상있을 것입니다 때문에
그래서 앞으로 반복자 요구 사항을 충족하는 반복자 카테고리 괜찮아.
예 올바르게 작동합니다. 범위를 정의 앞으로 반복자
그래서를 검사 -이 경우 호출됩니다 std::max_element
의 과부하는 반복자에
template< class ForwardIt >
ForwardIt max_element(ForwardIt first, ForwardIt last);
유일한 요구 사항은
first
,
last
입니다입니다 무작위 접근 반복자에 대한 요구 사항은 없으며, 순방향 반복자 만 필요합니다.
당신은 forwarder 만 필요로하는''max_element' '에 대해 옳았 습니다만,''std :: deque'' 반복자의 범주에 대한 혼란이 있습니다. 무작위 액세스 반복자가 있으면 연속 저장을 의미하지 않습니다. –
언제나 작동한다는 보장이 없습니까? – juanchopanza
spec은'ForwardIt' 클래스 만 필요로하므로 forward iteration을 구현하는 컬렉션에서 작동해야합니다. 그것은 연속적인 스토리지와는 전혀 관련이 없습니다. –
'std :: max_elements'는 forward iterator 만 필요합니다 : http://en.cppreference.com/w/cpp/algorithm/max_element –