- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files
- Directories
- Examples

- File List
- File Members

Classes | Namespaces | Functions

# qalgorithms.h File Reference

`#include <QtCore/qglobal.h>`

Go to the source code of this file.

## Classes
class | qLess< T >
class | qGreater< T >
## Namespaces
namespace | QAlgorithmsPrivate
## Functions
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE void | qSortHelper (RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan)
template<typename RandomAccessIterator , typename T >
void | qSortHelper (RandomAccessIterator begin, RandomAccessIterator end, const T &dummy)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE void | qStableSortHelper (RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan)
template<typename RandomAccessIterator , typename T >
void | qStableSortHelper (RandomAccessIterator, RandomAccessIterator, const T &)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qLowerBoundHelper (RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qUpperBoundHelper (RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qBinaryFindHelper (RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
template<typename InputIterator , typename OutputIterator >
OutputIterator | qCopy (InputIterator begin, InputIterator end, OutputIterator dest)
template<typename BiIterator1 , typename BiIterator2 >
BiIterator2 | qCopyBackward (BiIterator1 begin, BiIterator1 end, BiIterator2 dest)
template<typename InputIterator1 , typename InputIterator2 >
bool | qEqual (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2)
template<typename ForwardIterator , typename T >
void | qFill (ForwardIterator first, ForwardIterator last, const T &val)
template<typename Container , typename T >
void | qFill (Container &container, const T &val)
template<typename InputIterator , typename T >
InputIterator | qFind (InputIterator first, InputIterator last, const T &val)
template<typename Container , typename T >
Container::const_iterator | qFind (const Container &container, const T &val)
template<typename InputIterator , typename T , typename Size >
void | qCount (InputIterator first, InputIterator last, const T &value, Size &n)
template<typename Container , typename T , typename Size >
void | qCount (const Container &container, const T &value, Size &n)
template<typename RandomAccessIterator >
void | qSort (RandomAccessIterator start, RandomAccessIterator end)
template<typename RandomAccessIterator , typename LessThan >
void | qSort (RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan)
template<typename Container >
void | qSort (Container &c)
template<typename RandomAccessIterator >
void | qStableSort (RandomAccessIterator start, RandomAccessIterator end)
template<typename RandomAccessIterator , typename LessThan >
void | qStableSort (RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan)
template<typename Container >
void | qStableSort (Container &c)
template<typename RandomAccessIterator , typename T >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qLowerBound (RandomAccessIterator begin, RandomAccessIterator end, const T &value)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qLowerBound (RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
template<typename Container , typename T >
Q_OUTOFLINE_TEMPLATE Container::const_iterator | qLowerBound (const Container &container, const T &value)
template<typename RandomAccessIterator , typename T >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qUpperBound (RandomAccessIterator begin, RandomAccessIterator end, const T &value)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qUpperBound (RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
template<typename Container , typename T >
Q_OUTOFLINE_TEMPLATE Container::const_iterator | qUpperBound (const Container &container, const T &value)
template<typename RandomAccessIterator , typename T >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qBinaryFind (RandomAccessIterator begin, RandomAccessIterator end, const T &value)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE RandomAccessIterator | qBinaryFind (RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
template<typename Container , typename T >
Q_OUTOFLINE_TEMPLATE Container::const_iterator | qBinaryFind (const Container &container, const T &value)
template<typename ForwardIterator >
Q_OUTOFLINE_TEMPLATE void | qDeleteAll (ForwardIterator begin, ForwardIterator end)
template<typename Container >
void | qDeleteAll (const Container &c)
template<typename RandomAccessIterator >
Q_OUTOFLINE_TEMPLATE void | qReverse (RandomAccessIterator begin, RandomAccessIterator end)
template<typename RandomAccessIterator >
Q_OUTOFLINE_TEMPLATE void | qRotate (RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end)
template<typename RandomAccessIterator , typename T , typename LessThan >
Q_OUTOFLINE_TEMPLATE void | qMerge (RandomAccessIterator begin, RandomAccessIterator pivot, RandomAccessIterator end, T &t, LessThan lessThan)

## Function Documentation

OutputIterator qCopy | ( | InputIterator | begin,
|  | InputIterator | end,
|  | OutputIterator | dest
| ) |  | `[inline]`

Search for all occurrences

Definition at line 79 of file qalgorithms.h.

    {
        while (begin != end)
            *dest++ = *begin++;
        return dest;
    }

BiIterator2 qCopyBackward | ( | BiIterator1 | begin,
|  | BiIterator1 | end,
|  | BiIterator2 | dest
| ) |  | `[inline]`

Search for all occurrences

Definition at line 87 of file qalgorithms.h.

    {
        while (begin != end)
            *--dest = *--end;
        return dest;
    }

bool qEqual | ( | InputIterator1 | first1,
|  | InputIterator1 | last1,
|  | InputIterator2 | first2
| ) |  | `[inline]`

Search for all occurrences

Definition at line 95 of file qalgorithms.h.

    {
        for (; first1 != last1; ++first1, ++first2)
            if (!(*first1 == *first2))
                return false;
        return true;
    }

void qFill | ( | ForwardIterator | first,
|  | ForwardIterator | last,
|  | const T & | val
| ) |  | `[inline]`

Search for all occurrences

Definition at line 104 of file qalgorithms.h.

    {
        for (; first != last; ++first)
            *first = val;
    }

void qFill | ( | Container & | container,
|  | const T & | val
| ) |  | `[inline]`

Search for all occurrences

Definition at line 111 of file qalgorithms.h.

    {
        qFill(container.begin(), container.end(), val);
    }

InputIterator qFind | ( | InputIterator | first,
|  | InputIterator | last,
|  | const T & | val
| ) |  | `[inline]`

Search for all occurrences

Definition at line 117 of file qalgorithms.h.

    {
        while (first != last && !(*first == val))
            ++first;
        return first;
    }

Container::const_iterator qFind | ( | const Container & | container,
|  | const T & | val
| ) |  | `[inline]`

Search for all occurrences

Definition at line 125 of file qalgorithms.h.

    {
        return qFind(container.constBegin(), container.constEnd(), val);
    }

void qCount | ( | InputIterator | first,
|  | InputIterator | last,
|  | const T & | value,
|  | Size & | n
| ) |  | `[inline]`

Search for all occurrences

Definition at line 131 of file qalgorithms.h.

    {
        for (; first != last; ++first)
            if (*first == value)
                ++n;
    }

void qCount | ( | const Container & | container,
|  | const T & | value,
|  | Size & | n
| ) |  | `[inline]`

Search for all occurrences

Definition at line 139 of file qalgorithms.h.

    {
        qCount(container.constBegin(), container.constEnd(), value, n);
    }

void qSort | ( | RandomAccessIterator | start,
|  | RandomAccessIterator | end
| ) |  | `[inline]`

Search for all occurrences

Definition at line 177 of file qalgorithms.h.

    {
        if (start != end)
            QAlgorithmsPrivate::qSortHelper(start, end, *start);
    }

void qSort | ( | RandomAccessIterator | start,
|  | RandomAccessIterator | end,
|  | LessThan | lessThan
| ) |  | `[inline]`

Search for all occurrences

Definition at line 184 of file qalgorithms.h.

    {
        if (start != end)
            QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan);
    }

void qSort | ( | Container & | c | ) | `[inline]`

Search for all occurrences

Definition at line 191 of file qalgorithms.h.

    {
    #ifdef Q_CC_BOR
        // Work around Borland 5.5 optimizer bug
        c.detach();
    #endif
        if (!c.empty())
            QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin());
    }

void qStableSort | ( | RandomAccessIterator | start,
|  | RandomAccessIterator | end
| ) |  | `[inline]`

Search for all occurrences

Definition at line 202 of file qalgorithms.h.

    {
        if (start != end)
            QAlgorithmsPrivate::qStableSortHelper(start, end, *start);
    }

void qStableSort | ( | RandomAccessIterator | start,
|  | RandomAccessIterator | end,
|  | LessThan | lessThan
| ) |  | `[inline]`

Search for all occurrences

Definition at line 209 of file qalgorithms.h.

    {
        if (start != end)
            QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan);
    }

void qStableSort | ( | Container & | c | ) | `[inline]`

Search for all occurrences

Definition at line 216 of file qalgorithms.h.

    {
    #ifdef Q_CC_BOR
        // Work around Borland 5.5 optimizer bug
        c.detach();
    #endif
        if (!c.empty())
            QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin());
    }

Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBound | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end,
|  | const T & | value
| ) |  |

Search for all occurrences

Definition at line 227 of file qalgorithms.h.

    {
        // Implementation is duplicated from QAlgorithmsPrivate to keep existing code
        // compiling. We have to allow using *begin and value with different types,
        // and then implementing operator< for those types.
        RandomAccessIterator middle;
        int n = end - begin;
        int half;

        while (n > 0) {
            half = n >> 1;
            middle = begin + half;
            if (*middle < value) {
                begin = middle + 1;
                n -= half + 1;
            } else {
                n = half;
            }
        }
        return begin;
    }

Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBound | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end,
|  | const T & | value,
|  | LessThan | lessThan
| ) |  |

Search for all occurrences

Definition at line 250 of file qalgorithms.h.

    {
        return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan);
    }

Q_OUTOFLINE_TEMPLATE Container::const_iterator qLowerBound | ( | const Container & | container,
|  | const T & | value
| ) |  |

Search for all occurrences

Definition at line 256 of file qalgorithms.h.

    {
        return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
    }

Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBound | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end,
|  | const T & | value
| ) |  |

Search for all occurrences

Definition at line 262 of file qalgorithms.h.

    {
        // Implementation is duplicated from QAlgorithmsPrivate.
        RandomAccessIterator middle;
        int n = end - begin;
        int half;

        while (n > 0) {
            half = n >> 1;
            middle = begin + half;
            if (value < *middle) {
                n = half;
            } else {
                begin = middle + 1;
                n -= half + 1;
            }
        }
        return begin;
    }

Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBound | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end,
|  | const T & | value,
|  | LessThan | lessThan
| ) |  |

Search for all occurrences

Definition at line 283 of file qalgorithms.h.

    {
        return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan);
    }

Q_OUTOFLINE_TEMPLATE Container::const_iterator qUpperBound | ( | const Container & | container,
|  | const T & | value
| ) |  |

Search for all occurrences

Definition at line 289 of file qalgorithms.h.

    {
        return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
    }

Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFind | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end,
|  | const T & | value
| ) |  |

Search for all occurrences

Definition at line 295 of file qalgorithms.h.

    {
        // Implementation is duplicated from QAlgorithmsPrivate.
        RandomAccessIterator it = qLowerBound(begin, end, value);

        if (it == end || value < *it)
            return end;

        return it;
    }

Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFind | ( | RandomAccessIterator | begin,
|  | RandomAccessIterator | end,
|  | const T & | value,
|  | LessThan | lessThan
| ) |  |

Search for all occurrences

Definition at line 307 of file qalgorithms.h.

    {
        return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan);
    }

Q_OUTOFLINE_TEMPLATE Container::const_iterator qBinaryFind | ( | const Container & | container,
|  | const T & | value
| ) |  |

Search for all occurrences

Definition at line 313 of file qalgorithms.h.

    {
        return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
    }

Q_OUTOFLINE_TEMPLATE void qDeleteAll | ( | ForwardIterator | begin,
|  | ForwardIterator | end
| ) |  |

Search for all occurrences

Definition at line 319 of file qalgorithms.h.

    {
        while (begin != end) {
            delete *begin;
            ++begin;
        }
    }

void qDeleteAll | ( | const Container & | c | ) | `[inline]`

Search for all occurrences

Definition at line 328 of file qalgorithms.h.

    {
        qDeleteAll(c.begin(), c.end());
    }