, , RandomAccessContainer Concept... , std::vector.
std::vector , , std::lower_bound std::upper_bound, , , , - std::equal_range, , lower upper, .
, , , std::distance O (1) RandomAccessIterator.
typedef std::vector<int> ints_t;
typedef ints_t::iterator iterator;
ints_t myInts;
for (iterator it = another.begin(), end = another.end(); it != end; ++it)
{
int myValue = *it;
iterator search = std::lower_bound(myInts.begin(), myInts.end(), myValue);
myInts.insert(search, myValue);
std::cout << "Inserted " << myValue << " at "
<< std::distance(myInts.begin(), search) << "\n";
}
std::pair<iterator,iterator> myPair =
std::equal_range(myInts.begin(), myInts.end(), 50);
std::cout << "There are " << std::distance(myPair.first,myPair.second)
<< " values '50' in the vector, starting at index "
<< std::distance(myInts.begin(), myPair.first) << std::endl;
, ?
std::lower_bound, std::upper_bound std::equal_range O (log (n)), std::distance O (1), ...
EDIT: → - O (n), .