c++ - What the effect of std::nth_element(a.begin(), a.end(), a.end())? -


i read description of std::nth_element @ http://www.sgi.com/tech/stl/nth_element.html

template <class randomaccessiterator> void nth_element(randomaccessiterator first, randomaccessiterator nth,                  randomaccessiterator last); 

note preconditions are

  1. [first, nth) valid range.
  2. [nth, last) valid range.

my question is:

is valid call std::nth_element(a.begin(), a.end(), a.end())? if so, what's effect? doesn't violate preconditions above, anyway. anywhere in language standard (or other documents) stated nth must pointing element in a?

it's valid , probably, not guaranteed standard, null operation. given data, 2 preconditions become:

[a.begin(), a.end()) valid range. [a.end(), a.end()) valid range. 

which both true, second interval empty though. standard 25.3.2/1:

after nth_element element in position pointed nth element in position if whole range sorted. iterator in range [first, nth) , iterator j in range [nth, last) holds that: !(*i > *j) or comp(*j, *i) == false.

if whole range sorted original a.end() @ a.end() , second part range [nth, last) empty there no elements evaluate !(*i > *j) , comp(*j, *i) == false conditions.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -